feat: 生物由来データに空文字→NULL変換を実装
This commit is contained in:
parent
c38e3cb69e
commit
a7d4033ca4
@ -1281,165 +1281,165 @@ class VjskReceiveFileMapper:
|
|||||||
,dwh_upd_dt
|
,dwh_upd_dt
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
t.rec_data
|
src05.convert_empty_to_null(t.rec_data)
|
||||||
,t.rec_whs_cd
|
,src05.convert_empty_to_null(t.rec_whs_cd)
|
||||||
,t.rec_whs_sub_cd
|
,src05.convert_empty_to_null(t.rec_whs_sub_cd)
|
||||||
,t.rec_whs_org_cd
|
,src05.convert_empty_to_null(t.rec_whs_org_cd)
|
||||||
,t.rec_cust_cd
|
,src05.convert_empty_to_null(t.rec_cust_cd)
|
||||||
,t.rec_comm_cd
|
,src05.convert_empty_to_null(t.rec_comm_cd)
|
||||||
,t.rec_tran_kbn
|
,src05.convert_empty_to_null(t.rec_tran_kbn)
|
||||||
,t.rev_hsdnymd_wrk
|
,src05.convert_empty_to_null(t.rev_hsdnymd_wrk)
|
||||||
,t.rev_hsdnymd_srk
|
,src05.convert_empty_to_null(t.rev_hsdnymd_srk)
|
||||||
,t.rec_urag_num
|
,src05.convert_empty_to_null(t.rec_urag_num)
|
||||||
,t.rec_comm_name
|
,src05.convert_empty_to_null(t.rec_comm_name)
|
||||||
,t.rec_nonyu_fcl_name
|
,src05.convert_empty_to_null(t.rec_nonyu_fcl_name)
|
||||||
,t.rec_nonyu_fcl_addr
|
,src05.convert_empty_to_null(t.rec_nonyu_fcl_addr)
|
||||||
,t.rec_lot_num1
|
,src05.convert_empty_to_null(t.rec_lot_num1)
|
||||||
,t.rec_qty1
|
,src05.convert_empty_to_null(t.rec_qty1)
|
||||||
,t.rec_lot_num2
|
,src05.convert_empty_to_null(t.rec_lot_num2)
|
||||||
,t.rec_qty2
|
,src05.convert_empty_to_null(t.rec_qty2)
|
||||||
,t.rec_lot_num3
|
,src05.convert_empty_to_null(t.rec_lot_num3)
|
||||||
,t.rec_qty3
|
,src05.convert_empty_to_null(t.rec_qty3)
|
||||||
,t.rec_ymd
|
,src05.convert_empty_to_null(t.rec_ymd)
|
||||||
,t.sale_data_cat
|
,src05.convert_empty_to_null(t.sale_data_cat)
|
||||||
,t.slip_file_name
|
,src05.convert_empty_to_null(t.slip_file_name)
|
||||||
,t.slip_mgt_num
|
,src05.convert_empty_to_null(t.slip_mgt_num)
|
||||||
,t.row_num
|
,t.row_num
|
||||||
,t.hsdn_ymd
|
,src05.convert_empty_to_null(t.hsdn_ymd)
|
||||||
,t.exec_dt
|
,src05.convert_empty_to_null(t.exec_dt)
|
||||||
,t.v_tran_cd
|
,t.v_tran_cd
|
||||||
,t.tran_kbn_name
|
,src05.convert_empty_to_null(t.tran_kbn_name)
|
||||||
,t.whs_org_cd
|
,src05.convert_empty_to_null(t.whs_org_cd)
|
||||||
,t.v_whsorg_cd
|
,t.v_whsorg_cd
|
||||||
,t.whs_org_name
|
,src05.convert_empty_to_null(t.whs_org_name)
|
||||||
,t.whs_org_kn
|
,src05.convert_empty_to_null(t.whs_org_kn)
|
||||||
,t.v_whs_cd
|
,t.v_whs_cd
|
||||||
,t.whs_name
|
,src05.convert_empty_to_null(t.whs_name)
|
||||||
,t.nonyu_fcl_cd
|
,src05.convert_empty_to_null(t.nonyu_fcl_cd)
|
||||||
,t.v_inst_cd
|
,nullif(t.v_inst_cd,'')
|
||||||
,t.v_inst_name
|
,nullif(t.v_inst_name,'')
|
||||||
,t.v_inst_kn
|
,nullif(t.v_inst_kn,'')
|
||||||
,t.v_inst_addr
|
,nullif(t.v_inst_addr,'')
|
||||||
,t.comm_cd
|
,nullif(t.comm_cd,'')
|
||||||
,t.product_name
|
,nullif(t.product_name,'')
|
||||||
,t.htdnymd_err_kbn
|
,nullif(t.htdnymd_err_kbn,'')
|
||||||
,t.prd_exis_kbn
|
,nullif(t.prd_exis_kbn,'')
|
||||||
,t.fcl_exis_kbn
|
,nullif(t.fcl_exis_kbn,'')
|
||||||
,t.qty1
|
,t.qty1
|
||||||
,t.qty2
|
,t.qty2
|
||||||
,t.qty3
|
,t.qty3
|
||||||
,t.slip_org_kbn
|
,t.slip_org_kbn
|
||||||
,t.bef_slip_mgt_num
|
,src05.convert_empty_to_null(t.bef_slip_mgt_num)
|
||||||
,t.whs_rep_comm_name
|
,src05.convert_empty_to_null(t.whs_rep_comm_name)
|
||||||
,t.whs_rep_nonyu_fcl_name
|
,src05.convert_empty_to_null(t.whs_rep_nonyu_fcl_name)
|
||||||
,t.whs_rep_nonyu_fcl_addr
|
,src05.convert_empty_to_null(t.whs_rep_nonyu_fcl_addr)
|
||||||
,t.err_flg1
|
,src05.convert_empty_to_null(t.err_flg1)
|
||||||
,t.err_flg2
|
,src05.convert_empty_to_null(t.err_flg2)
|
||||||
,t.err_flg3
|
,src05.convert_empty_to_null(t.err_flg3)
|
||||||
,t.err_flg4
|
,src05.convert_empty_to_null(t.err_flg4)
|
||||||
,t.err_flg5
|
,src05.convert_empty_to_null(t.err_flg5)
|
||||||
,t.err_flg6
|
,src05.convert_empty_to_null(t.err_flg6)
|
||||||
,t.err_flg7
|
,src05.convert_empty_to_null(t.err_flg7)
|
||||||
,t.err_flg8
|
,src05.convert_empty_to_null(t.err_flg8)
|
||||||
,t.err_flg9
|
,src05.convert_empty_to_null(t.err_flg9)
|
||||||
,t.err_flg10
|
,src05.convert_empty_to_null(t.err_flg10)
|
||||||
,t.err_flg11
|
,src05.convert_empty_to_null(t.err_flg11)
|
||||||
,t.err_flg12
|
,src05.convert_empty_to_null(t.err_flg12)
|
||||||
,t.err_flg13
|
,src05.convert_empty_to_null(t.err_flg13)
|
||||||
,t.err_flg14
|
,src05.convert_empty_to_null(t.err_flg14)
|
||||||
,t.err_flg15
|
,src05.convert_empty_to_null(t.err_flg15)
|
||||||
,t.err_flg16
|
,src05.convert_empty_to_null(t.err_flg16)
|
||||||
,t.err_flg17
|
,src05.convert_empty_to_null(t.err_flg17)
|
||||||
,t.err_flg18
|
,src05.convert_empty_to_null(t.err_flg18)
|
||||||
,t.err_flg19
|
,src05.convert_empty_to_null(t.err_flg19)
|
||||||
,t.err_flg20
|
,src05.convert_empty_to_null(t.err_flg20)
|
||||||
,t.kjyo_ym
|
,src05.convert_empty_to_null(t.kjyo_ym)
|
||||||
,t.tksnbk_kbn
|
,src05.convert_empty_to_null(t.tksnbk_kbn)
|
||||||
,t.fcl_exec_kbn
|
,src05.convert_empty_to_null(t.fcl_exec_kbn)
|
||||||
,t.rec_sts_kbn
|
,src05.convert_empty_to_null(t.rec_sts_kbn)
|
||||||
,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
|
,nullif(t.ins_dt, 0) -- 受領データがブランクだった場合にゼロ日付で取得されるので明示的にNULL値に変換する
|
||||||
,t.ins_usr
|
,src05.convert_empty_to_null(t.ins_usr)
|
||||||
,SYSDATE()
|
,SYSDATE()
|
||||||
FROM org05.bio_sales AS t
|
FROM org05.bio_sales AS t
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
rec_data=t.rec_data
|
rec_data=VALUES(rec_data)
|
||||||
,rec_whs_cd=t.rec_whs_cd
|
,rec_whs_cd=VALUES(rec_whs_cd)
|
||||||
,rec_whs_sub_cd=t.rec_whs_sub_cd
|
,rec_whs_sub_cd=VALUES(rec_whs_sub_cd)
|
||||||
,rec_whs_org_cd=t.rec_whs_org_cd
|
,rec_whs_org_cd=VALUES(rec_whs_org_cd)
|
||||||
,rec_cust_cd=t.rec_cust_cd
|
,rec_cust_cd=VALUES(rec_cust_cd)
|
||||||
,rec_comm_cd=t.rec_comm_cd
|
,rec_comm_cd=VALUES(rec_comm_cd)
|
||||||
,rec_tran_kbn=t.rec_tran_kbn
|
,rec_tran_kbn=VALUES(rec_tran_kbn)
|
||||||
,rev_hsdnymd_wrk=t.rev_hsdnymd_wrk
|
,rev_hsdnymd_wrk=VALUES(rev_hsdnymd_wrk)
|
||||||
,rev_hsdnymd_srk=t.rev_hsdnymd_srk
|
,rev_hsdnymd_srk=VALUES(rev_hsdnymd_srk)
|
||||||
,rec_urag_num=t.rec_urag_num
|
,rec_urag_num=VALUES(rec_urag_num)
|
||||||
,rec_comm_name=t.rec_comm_name
|
,rec_comm_name=VALUES(rec_comm_name)
|
||||||
,rec_nonyu_fcl_name=t.rec_nonyu_fcl_name
|
,rec_nonyu_fcl_name=VALUES(rec_nonyu_fcl_name)
|
||||||
,rec_nonyu_fcl_addr=t.rec_nonyu_fcl_addr
|
,rec_nonyu_fcl_addr=VALUES(rec_nonyu_fcl_addr)
|
||||||
,rec_lot_num1=t.rec_lot_num1
|
,rec_lot_num1=VALUES(rec_lot_num1)
|
||||||
,rec_qty1=t.rec_qty1
|
,rec_qty1=VALUES(rec_qty1)
|
||||||
,rec_lot_num2=t.rec_lot_num2
|
,rec_lot_num2=VALUES(rec_lot_num2)
|
||||||
,rec_qty2=t.rec_qty2
|
,rec_qty2=VALUES(rec_qty2)
|
||||||
,rec_lot_num3=t.rec_lot_num3
|
,rec_lot_num3=VALUES(rec_lot_num3)
|
||||||
,rec_qty3=t.rec_qty3
|
,rec_qty3=VALUES(rec_qty3)
|
||||||
,rec_ymd=t.rec_ymd
|
,rec_ymd=VALUES(rec_ymd)
|
||||||
,sale_data_cat=t.sale_data_cat
|
,sale_data_cat=VALUES(sale_data_cat)
|
||||||
,slip_file_name=t.slip_file_name
|
,slip_file_name=VALUES(slip_file_name)
|
||||||
,slip_mgt_num=t.slip_mgt_num
|
,slip_mgt_num=VALUES(slip_mgt_num)
|
||||||
,row_num=t.row_num
|
,row_num=VALUES(row_num)
|
||||||
,hsdn_ymd=t.hsdn_ymd
|
,hsdn_ymd=VALUES(hsdn_ymd)
|
||||||
,exec_dt=t.exec_dt
|
,exec_dt=VALUES(exec_dt)
|
||||||
,v_tran_cd=t.v_tran_cd
|
,v_tran_cd=VALUES(v_tran_cd)
|
||||||
,tran_kbn_name=t.tran_kbn_name
|
,tran_kbn_name=VALUES(tran_kbn_name)
|
||||||
,whs_org_cd=t.whs_org_cd
|
,whs_org_cd=VALUES(whs_org_cd)
|
||||||
,v_whsorg_cd=t.v_whsorg_cd
|
,v_whsorg_cd=VALUES(v_whsorg_cd)
|
||||||
,whs_org_name=t.whs_org_name
|
,whs_org_name=VALUES(whs_org_name)
|
||||||
,whs_org_kn=t.whs_org_kn
|
,whs_org_kn=VALUES(whs_org_kn)
|
||||||
,v_whs_cd=t.v_whs_cd
|
,v_whs_cd=VALUES(v_whs_cd)
|
||||||
,whs_name=t.whs_name
|
,whs_name=VALUES(whs_name)
|
||||||
,nonyu_fcl_cd=t.nonyu_fcl_cd
|
,nonyu_fcl_cd=VALUES(nonyu_fcl_cd)
|
||||||
,v_inst_cd=t.v_inst_cd
|
,v_inst_cd=VALUES(v_inst_cd)
|
||||||
,v_inst_name=t.v_inst_name
|
,v_inst_name=VALUES(v_inst_name)
|
||||||
,v_inst_kn=t.v_inst_kn
|
,v_inst_kn=VALUES(v_inst_kn)
|
||||||
,v_inst_addr=t.v_inst_addr
|
,v_inst_addr=VALUES(v_inst_addr)
|
||||||
,comm_cd=t.comm_cd
|
,comm_cd=VALUES(comm_cd)
|
||||||
,product_name=t.product_name
|
,product_name=VALUES(product_name)
|
||||||
,htdnymd_err_kbn=t.htdnymd_err_kbn
|
,htdnymd_err_kbn=VALUES(htdnymd_err_kbn)
|
||||||
,prd_exis_kbn=t.prd_exis_kbn
|
,prd_exis_kbn=VALUES(prd_exis_kbn)
|
||||||
,fcl_exis_kbn=t.fcl_exis_kbn
|
,fcl_exis_kbn=VALUES(fcl_exis_kbn)
|
||||||
,qty1=t.qty1
|
,qty1=VALUES(qty1)
|
||||||
,qty2=t.qty2
|
,qty2=VALUES(qty2)
|
||||||
,qty3=t.qty3
|
,qty3=VALUES(qty3)
|
||||||
,slip_org_kbn=t.slip_org_kbn
|
,slip_org_kbn=VALUES(slip_org_kbn)
|
||||||
,bef_slip_mgt_num=t.bef_slip_mgt_num
|
,bef_slip_mgt_num=VALUES(bef_slip_mgt_num)
|
||||||
,whs_rep_comm_name=t.whs_rep_comm_name
|
,whs_rep_comm_name=VALUES(whs_rep_comm_name)
|
||||||
,whs_rep_nonyu_fcl_name=t.whs_rep_nonyu_fcl_name
|
,whs_rep_nonyu_fcl_name=VALUES(whs_rep_nonyu_fcl_name)
|
||||||
,whs_rep_nonyu_fcl_addr=t.whs_rep_nonyu_fcl_addr
|
,whs_rep_nonyu_fcl_addr=VALUES(whs_rep_nonyu_fcl_addr)
|
||||||
,err_flg1=t.err_flg1
|
,err_flg1=VALUES(err_flg1)
|
||||||
,err_flg2=t.err_flg2
|
,err_flg2=VALUES(err_flg2)
|
||||||
,err_flg3=t.err_flg3
|
,err_flg3=VALUES(err_flg3)
|
||||||
,err_flg4=t.err_flg4
|
,err_flg4=VALUES(err_flg4)
|
||||||
,err_flg5=t.err_flg5
|
,err_flg5=VALUES(err_flg5)
|
||||||
,err_flg6=t.err_flg6
|
,err_flg6=VALUES(err_flg6)
|
||||||
,err_flg7=t.err_flg7
|
,err_flg7=VALUES(err_flg7)
|
||||||
,err_flg8=t.err_flg8
|
,err_flg8=VALUES(err_flg8)
|
||||||
,err_flg9=t.err_flg9
|
,err_flg9=VALUES(err_flg9)
|
||||||
,err_flg10=t.err_flg10
|
,err_flg10=VALUES(err_flg10)
|
||||||
,err_flg11=t.err_flg11
|
,err_flg11=VALUES(err_flg11)
|
||||||
,err_flg12=t.err_flg12
|
,err_flg12=VALUES(err_flg12)
|
||||||
,err_flg13=t.err_flg13
|
,err_flg13=VALUES(err_flg13)
|
||||||
,err_flg14=t.err_flg14
|
,err_flg14=VALUES(err_flg14)
|
||||||
,err_flg15=t.err_flg15
|
,err_flg15=VALUES(err_flg15)
|
||||||
,err_flg16=t.err_flg16
|
,err_flg16=VALUES(err_flg16)
|
||||||
,err_flg17=t.err_flg17
|
,err_flg17=VALUES(err_flg17)
|
||||||
,err_flg18=t.err_flg18
|
,err_flg18=VALUES(err_flg18)
|
||||||
,err_flg19=t.err_flg19
|
,err_flg19=VALUES(err_flg19)
|
||||||
,err_flg20=t.err_flg20
|
,err_flg20=VALUES(err_flg20)
|
||||||
,kjyo_ym=t.kjyo_ym
|
,kjyo_ym=VALUES(kjyo_ym)
|
||||||
,tksnbk_kbn=t.tksnbk_kbn
|
,tksnbk_kbn=VALUES(tksnbk_kbn)
|
||||||
,fcl_exec_kbn=t.fcl_exec_kbn
|
,fcl_exec_kbn=VALUES(fcl_exec_kbn)
|
||||||
,rec_sts_kbn=t.rec_sts_kbn
|
,rec_sts_kbn=VALUES(rec_sts_kbn)
|
||||||
,ins_dt=nullif(t.ins_dt, 0)
|
,ins_dt=VALUES(ins_dt)
|
||||||
,ins_usr=t.ins_usr
|
,ins_usr=VALUES(ins_usr)
|
||||||
,dwh_upd_dt=SYSDATE()
|
,dwh_upd_dt=SYSDATE()
|
||||||
;
|
;
|
||||||
""")
|
""")
|
||||||
|
|||||||
@ -996,7 +996,7 @@ class TestImportFileToDb:
|
|||||||
self.batch_context.is_vjsk_stock_import_day = True
|
self.batch_context.is_vjsk_stock_import_day = True
|
||||||
self.db.execute(f"truncate table {table_name_src}")
|
self.db.execute(f"truncate table {table_name_src}")
|
||||||
|
|
||||||
# assertion1 (insert 4row)
|
# assertion1 (insert 6row)
|
||||||
|
|
||||||
# 処理実行
|
# 処理実行
|
||||||
target_dict = {
|
target_dict = {
|
||||||
@ -1012,7 +1012,7 @@ class TestImportFileToDb:
|
|||||||
# 突合から除外する項目
|
# 突合から除外する項目
|
||||||
ignore_columns = ['dwh_upd_dt']
|
ignore_columns = ['dwh_upd_dt']
|
||||||
# orgテーブル結果が期待値通りかを突合
|
# orgテーブル結果が期待値通りかを突合
|
||||||
assert_table_results(result_org, assert_list, ignore_columns)
|
assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True)
|
||||||
# srcテーブル結果を取得
|
# srcテーブル結果を取得
|
||||||
result_src = self.db.execute_select(f"select * from {table_name_src}")
|
result_src = self.db.execute_select(f"select * from {table_name_src}")
|
||||||
# 突合から除外する項目
|
# 突合から除外する項目
|
||||||
@ -1036,18 +1036,18 @@ class TestImportFileToDb:
|
|||||||
# 突合から除外する項目
|
# 突合から除外する項目
|
||||||
ignore_columns = ['dwh_upd_dt']
|
ignore_columns = ['dwh_upd_dt']
|
||||||
# orgテーブル結果が期待値通りかを突合
|
# orgテーブル結果が期待値通りかを突合
|
||||||
assert_table_results(result_org, assert_list, ignore_columns)
|
assert_table_results(result_org, assert_list, ignore_columns, is_loaddata=True)
|
||||||
# srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得
|
# srcテーブル結果(orgテーブル結果のPK値で一致するもの)を取得
|
||||||
result_src = self.db.execute_select(
|
result_src = self.db.execute_select(
|
||||||
f"select * from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)")
|
f"select s.* from {table_name_src} s inner join {table_name_org} o on (s.slip_mgt_num = o.slip_mgt_num)")
|
||||||
# 突合から除外する項目
|
# 突合から除外する項目
|
||||||
ignore_columns = ['dwh_upd_dt']
|
ignore_columns = ['dwh_upd_dt']
|
||||||
# srcテーブル結果が期待値通りかを突合
|
# srcテーブル結果が期待値通りかを突合
|
||||||
assert_table_results(result_src, assert_list, ignore_columns)
|
assert_table_results(result_src, assert_list, ignore_columns)
|
||||||
|
|
||||||
# srcテーブル結果のレコード件数 (insert 4row + update 2row + insert 2row = 6row)
|
# srcテーブル結果のレコード件数 (insert 6row + update 2row + insert 2row = 8row)
|
||||||
result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ")
|
result_src_count = self.db.execute_select(f"select count(*) from {table_name_src} ")
|
||||||
assert result_src_count[0]['count(*)'] == 6
|
assert result_src_count[0]['count(*)'] == 8
|
||||||
|
|
||||||
# teardown
|
# teardown
|
||||||
|
|
||||||
|
|||||||
@ -62,13 +62,14 @@ def is_valid_date_format(date_str: str, date_format):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_names: list = None, force_cast_to_str_columns: list = []) -> None:
|
def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignore_col_names: list = None, force_cast_to_str_columns: list = [], is_loaddata=False) -> None:
|
||||||
"""テーブル同士の取得結果突き合わせ
|
"""テーブル同士の取得結果突き合わせ
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
actual_rows (list[dict]): テスト結果の辞書リスト
|
actual_rows (list[dict]): テスト結果の辞書リスト
|
||||||
expect_rows (list[dict]): 期待値の辞書リスト
|
expect_rows (list[dict]): 期待値の辞書リスト
|
||||||
ignore_col_name (list): 比較を無視するDBのカラム名. Default None.
|
ignore_col_name (list): 比較を無視するDBのカラム名. Default None.
|
||||||
|
is_loaddata (bool): LOAD DATAで読み込むテーブルかどうかのフラグ。org05の比較をするときにONにする. Default False.
|
||||||
"""
|
"""
|
||||||
# 取得件数が一致すること
|
# 取得件数が一致すること
|
||||||
assert len(actual_rows) == len(expect_rows), f'レコード件数が一致しません。DBレコード数 : {len(actual_rows)} 期待値 : {len(expect_rows)}'
|
assert len(actual_rows) == len(expect_rows), f'レコード件数が一致しません。DBレコード数 : {len(actual_rows)} 期待値 : {len(expect_rows)}'
|
||||||
@ -113,8 +114,9 @@ def assert_table_results(actual_rows: list[dict], expect_rows: list[dict], ignor
|
|||||||
elif actual_value == "0000-00-00 00:00:00" and expect_value == "":
|
elif actual_value == "0000-00-00 00:00:00" and expect_value == "":
|
||||||
# DB項目(datetime)がゼロ日付(NULL代替値)の場合、期待値が""であれば"0000-00-00 00:00:00"に置換する
|
# DB項目(datetime)がゼロ日付(NULL代替値)の場合、期待値が""であれば"0000-00-00 00:00:00"に置換する
|
||||||
expect_value = "0000-00-00 00:00:00"
|
expect_value = "0000-00-00 00:00:00"
|
||||||
elif actual_value == "" and expect_value == "":
|
elif actual_value == "" and expect_value == "" and not is_loaddata:
|
||||||
# DB項目値が空文字のかつ期待値が""のパターンは想定外のパターンであるため、期待値をNoneに置換して失敗させる
|
# DB項目値が空文字のかつ期待値が""のパターンは想定外のパターンであるため、期待値をNoneに置換して失敗させる
|
||||||
|
# LOAD文では空文字で登録されるので除外する
|
||||||
expect_value = None
|
expect_value = None
|
||||||
|
|
||||||
# 検証
|
# 検証
|
||||||
|
|||||||
14
rds_mysql/stored_procedure/src05/convert_empty_to_null.sql
Normal file
14
rds_mysql/stored_procedure/src05/convert_empty_to_null.sql
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
-- A5M2で実行時に[SQL] - [スラッシュ(/)のみの行でSQLを区切る]に変えてから実行する
|
||||||
|
-- 空文字→NULL変換
|
||||||
|
CREATE FUNCTION src05.convert_empty_to_null(column_value VARCHAR(500))
|
||||||
|
RETURNS VARCHAR(500) DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
RETURN (
|
||||||
|
CASE
|
||||||
|
WHEN column_value IS NULL THEN NULL
|
||||||
|
WHEN LENGTH(column_value) = 0 THEN NULL
|
||||||
|
ELSE column_value
|
||||||
|
END
|
||||||
|
);
|
||||||
|
END
|
||||||
|
;
|
||||||
Loading…
x
Reference in New Issue
Block a user