SQL Server中能否使用“?”占位符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server中能否使用“?”占位符相关的知识,希望对你有一定的参考价值。

mysql中可以:String sql="select * from tUser where id=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1,userID);//来填充"?"占位符
那如果数据库换成SQL Server能否用同样的方法?

参考技术A sql server 好像没有占位符“?”,
我见过的有 :% ,_ ,^等
参考技术B T-SQL的参数:@userID
不过用法不同。
参考技术C 和上面那位仁兄一样不知道sql server有没有?
你所说的只是起一个标记的作用,这个和jsp里面的query对象的操作方法是一样的。
其实最简单的例子就像asp里的Parameters对象也是一样的道理。本回答被提问者采纳

SQL Server:如果左连接没有结果,则返回占位符/文本[重复]

【中文标题】SQL Server:如果左连接没有结果,则返回占位符/文本[重复]【英文标题】:SQL Server: return placeholder / text if Left Join has no result [duplicate] 【发布时间】:2014-10-10 14:38:06 【问题描述】:

我在自引用表上使用左连接来查看项目是否具有 parentID,然后获取父项的相应 itemName。 parentID 可以是整数或 NULL。

我的查询按预期工作。 我只是想知道是否有一种方法可以返回占位符/文本(例如“---”),否则它只会为查询的这个特定部分返回任何内容。也许通过使用 Case 语句?

有问题的部分是E.itemNameD.itemName,因为两者都只有在D.parentIDD.parentID 时才可用。 A.parentID 不为 NULL。

我的程序(缩短):

SELECT      A.itemName,
            B.lastUpdate,
            B.modTime,
            B.modBy,
            E.itemName AS levelMain,
            D.itemName AS levelSub
FROM        MOC_Links A
LEFT JOIN   MOC_Log B
ON          B.itemID = A.itemID
LEFT JOIN   MOC_Links D
ON          D.itemID = A.parentID
LEFT JOIN   MOC_Links E
ON          E.itemID = D.parentID
WHERE       A.itemName LIKE '%'+@searchTerm+'%'
ORDER BY    itemName, levelMain
FOR XML PATH('results'), ELEMENTS, TYPE, ROOT('ranks')

【问题讨论】:

【参考方案1】:

我想你在找coalesce():

coalesce(E.itemName, '---') as levelMain
coalesce(D.itemName, '---') as levelSub

【讨论】:

完美,就是这样 - 非常感谢,戈登!我会尽快接受。 :)【参考方案2】:

您可以使用 Isnull,例如ISNULL(E.itemName, '----')

【讨论】:

也谢谢你。

以上是关于SQL Server中能否使用“?”占位符的主要内容,如果未能解决你的问题,请参考以下文章

SQL 语句在Java中如何使用占位符?

在xp_sprintf中的Int占位符%d - SQL Server

Sql语句占位符?的使用

SQl语句中使用占位符的优点

Jfinal数据库操作语句中占位符的使用

关于SQL语句的占位符使用及动态SQL