Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server转义下划线_Sql Server - Fatal编程技术网

Sql server SQL Server转义下划线

Sql server SQL Server转义下划线,sql-server,Sql Server,如何转义下划线字符 我正在写类似以下where子句的东西,希望能够找到末尾带有_d的实际条目 Where Username Like '%_d' : 可以将通配符模式匹配字符用作文字字符。要将通配符用作文字字符,请将通配符括在括号中。下表显示了使用LIKE关键字和[]通配符的几个示例 对于您的情况: ... LIKE '%[_]d' 显然@Lasse solution是正确的,但是还有另一种方法可以解决您的问题:T-SQL操作符LIKE定义可选子句,它允许您声明一个字符,该字符将转义模式中的

如何转义下划线字符

我正在写类似以下where子句的东西,希望能够找到末尾带有_d的实际条目

Where Username Like '%_d'
:

可以将通配符模式匹配字符用作文字字符。要将通配符用作文字字符,请将通配符括在括号中。下表显示了使用LIKE关键字和[]通配符的几个示例

对于您的情况:

... LIKE '%[_]d'

显然@Lasse solution是正确的,但是还有另一种方法可以解决您的问题:T-SQL操作符
LIKE
定义可选子句,它允许您声明一个字符,该字符将转义模式中的下一个字符

对于您的情况,以下WHERE条款是等效的:

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

这些解决方案完全有道理。不幸的是,这两种方法对我都不起作用。我没有试图与它争论,而是采取了一种变通办法:

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name

这对我来说很管用,就用逃跑吧
'%\\\%'

在SSIS v18.0中,这些都不适用于我,所以我会继续这样做:

WHERE CHARINDEX(''u',thingyoursearching)<1


…我试图忽略带有下划线的字符串。如果要查找带有下划线的内容,只需将其翻转:


其中CHARINDEX(“''u',thingyoursearching)>0

我遇到了一个类似的问题,使用like模式
'%\'
不起作用-如问题所示:-)

使用
'%\\\%'
也不起作用,因为第一个
\
被解释为“在类似之前”

使用
'%\\\\\%'
有效。
\\
(双反斜杠)首先转换为单个
\
(反斜杠),然后在类似模式中使用。

类似“%[\\]%


Add[]帮我完成了这幅图:
ESCAPE
子句是SQL标准的一部分,可以在任何DBMS上使用,而不仅仅是SQL Server。噢,天哪。。。如果仍然不起作用,请确保列正确。