2016-03-04 61 views
-1

在属性文件中使用下面的查询并在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 \ " 
+0

我不明白的问题,这是不正确的,如果它是一个SQL查询,那么你应该有一个SQL标签没有壳标签... – Seekheart

回答

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

+0

感谢Mauro的回复..你可以请建议转义字符为上面的查询? – marjun

+0

逃避什么?正如我所说的上面这个变量名为“query”的内容是一个有效的sql语句...... – mauro