列名=%Column Name%SQL

列名=%Column Name%SQL,sql,netezza,Sql,Netezza,我们有一个类,它用SQL参数的实际HashMap值替换SQL参数。例如,从x选择*其中日期=%processingDate%将替换processingDate的值,然后检索相应的记录。但是,当参数名称与列名称相同时,似乎不进行替换;例如,选择*from x,其中date=%date%不替换date,然后检索所有记录,因为它的行为就像一个始终为真的布尔值。这是预期的SQL行为吗 感谢您的帮助。给定日期是T-SQL中的保留关键字,我建议使用[]包装该列以限定该列 链接到保留字列表 您在问题中提到了

我们有一个类,它用SQL参数的实际HashMap值替换SQL参数。例如,从x选择*其中日期=%processingDate%将替换processingDate的值,然后检索相应的记录。但是,当参数名称与列名称相同时,似乎不进行替换;例如,选择*from x,其中date=%date%不替换date,然后检索所有记录,因为它的行为就像一个始终为真的布尔值。这是预期的SQL行为吗


感谢您的帮助。

给定日期是T-SQL中的保留关键字,我建议使用[]包装该列以限定该列

链接到保留字列表

您在问题中提到了SQL参数。如果您的参数是sql参数,我希望它看起来像@date。如果没有@前缀,则查询可能是在计算列,而不是所需的参数

我相信这样的事情会对你有用:

--假设@date被计算为字符串 挑选* 从x 其中[date]类似于“%”+@date+'%

--评估特定值(研究like和=运算符之间的差异) 挑选* 从x
其中[date]=@date

date是一个坏例子。在我们的例子中,它实际上是完全不同的,它绝对不是一个保留字。具体来说,如果y是表x中的一列,则y=%y%将返回所有记录。我想这更像是您在中实现“替换”功能的编程语言的问题。我建议您在计划文件或目录视图中查看生成的sql