SQL Server 2005 查询使用 ?在 SQL Server 2012 中不起作用

SQL Server 2005 query uses ? which doesn't work in SQL Server 2012

我正在开发一个查询 SQL 服务器上的实时数据的应用程序。用户在“% %”标记内输入名称进行搜索。 IE。如果用户要搜索 属性 的所有者,例如 Noble,他们将输入 %noble%。

我们最近将应用程序和存储数据的 SQL 服务器从 SQL Server 2005 升级到 SQL Server 2012。

现有查询和新查询相同:

SELECT aurtvalm.pcl_num 
FROM aurtvalm 
INNER JOIN rtpostal ON aurtvalm.ass_num = rtpostal.ass_num
WHERE rtpostal.fmt_nm2 LIKE ?

在旧版本中,上述查询产生 16 个结果。 2012 版本中完全相同的查询会产生错误:

Incorrect Syntax near '?'

? 符号的使用自 SQL Server 2005 以来是否发生了变化?

那是因为你的语法不正确。您必须使用参数而不是问号。类似于:

SELECT aurtvalm.pcl_num 

FROM aurtvalm 
INNER JOIN rtpostal ON aurtvalm.ass_num = rtpostal.ass_num

WHERE rtpostal.fmt_nm2 like @param