sql查询的转义字符

时间:2016-03-04 12:53:53

标签: shell

我在属性文件中使用以下查询并在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 \ "

1 个答案:

答案 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语句。