SQL查询的转义字符
问题描述:
在属性文件中使用下面的查询并在shell脚本中使用,但由于查询中的特殊字符,它没有给我输出特殊字符。SQL查询的转义字符
query="select top 10 source_system,updt_etl_instnc_run_id,negative_posting_flag, to_number(to_varchar(to_date(create_tmstmp),'yyyymm')) as part_date from c_fin_a.gl_transaction_data where to_number(to_varchar(to_date(create_tmstmp),'yyyymm'))=$NOW and \$CONDITIONS"
我已经使用所有特殊字符的转义字符,那么它也不会给我同样的输出与转义字符。
query= \ " select top 10 source_system,updt_etl_instnc_run_id,negative_posting_flag, to_number \ (to_varchar \ (to_date \ (create_tmstmp \) , \ ' yyyymm \ ' \) \) as part_date from c_fin_a.gl_transaction_data where to_number \ (to_varchar \ (to_date \ (create_tmstmp \) , \ ' yyyymm \ ' \) \)= \ $NOW and \ \$CONDITIONS \ "
答
首先:当您为变量赋值时,绝对不要在等号周围使用空格。我的意思是var=value
是好的,var = value
不好。
现在,让我们假设你的shell变量具有以下值:
NOW=201603
CONDITIONS="city='New York'"
然后,你需要使用以下命令:
query="select top 10 source_system,updt_etl_instnc_run_id,negative_posting_flag, to_number(to_varchar(to_date(create_tmstmp),'yyyymm')) as part_date from c_fin_a.gl_transaction_data where to_number(to_varchar(to_date(create_tmstmp),'yyyymm'))=${NOW} and ${CONDITIONS}"
生成有效的SQL语句。
我不明白的问题,这是不正确的,如果它是一个SQL查询,那么你应该有一个SQL标签没有壳标签... – Seekheart