在SQL Server中转义字符串

21 浏览
0 Comments

在SQL Server中转义字符串

我在SQL中遇到了转义字符串的问题。例如:

SELECT TOP 10000 *
FROM experience
WHERE name IS
'AT&T'

这个语句显示附近有语法错误,附近的错误语法是'AT'。看起来问题出在&上面——有没有什么通用的转义规则?

我还尝试了以下语句:

SELECT TOP 10000 *
FROM experience
WHERE name Like
'AT&\T'

这个语句虽然没有结果(应该有结果),但是可以运行。

0
0 Comments

在SQL Server中,字符串字面值中唯一需要转义的字符是单引号'。可以通过使用两个单引号代替反斜杠进行转义。

例如:SELECT 'O''Reilly'

在绝大多数情况下,应该使用参数化查询,而不需要进行转义。

要正确使用的操作符是=

例如:SELECT TOP 10000 * FROM experience WHERE name = 'AT&T'

以下代码可以正常工作:SQL Fiddle Demo

IS只能与[NOT] NULL一起使用。

在字符串字面值中,反斜杠只有在紧接换行符之前时才具有特殊意义,此时它作为行继续字符。

例如:PRINT 'This is all \ one line'将返回

This is all one line

此处的问题是它要求对'AT&T'中的最后一个'T'进行替换。感谢您对操作符的建议!

- "替换变量"是谁要求的?SQL Server肯定没有。您在哪个工具中运行这个查询?

- 我猜您在使用SQL Plus?在这种情况下,请参见这里。不过,这也让人怀疑您是否真正连接到的是SQL Server而不是Oracle。如果您连接到的是Oracle,则需要重新编写查询,而不使用TOP

我肯定是使用Oracle的SQLDeveloper连接到SQL Server的。

- 我自己从未使用过SQLDeveloper。看起来您需要SET DEFINE OFF

0