我在属性文件中使用以下查询并在shell脚本中使用但由于查询中的特殊字符,它没有给我带有特殊字符的输出。
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 \ "
答案 0 :(得分:0)
首先:在为变量赋值时,不要在等号周围使用空格。我的意思是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语句。