Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 LIKE子句中使用特殊字符_Sql_Sql Server_Special Characters_Sql Like - Fatal编程技术网

如何在SQL Server LIKE子句中使用特殊字符

如何在SQL Server LIKE子句中使用特殊字符,sql,sql-server,special-characters,sql-like,Sql,Sql Server,Special Characters,Sql Like,我有一个表,我想在其中获得字符串,如ab aabb aaabbb……a n次,然后是b n次,如下所示 例如表: value ---------- ab aabb aaabbb aaaabbbb 1 1a abababa 我希望结果表为: value ---------- ab aabb aaabbb aaaabbbb 我试过这样做 select * from [NumTest] where value LIKE '[a]+[b]

我有一个表,我想在其中获得字符串,如
ab aabb aaabbb……
a n次,然后是b n次,如下所示

例如表:

  value 
---------- 
   ab
   aabb
   aaabbb
   aaaabbbb
   1
   1a
   abababa
我希望结果表为:

 value    
---------- 
ab
aabb
aaabbb
aaaabbbb
我试过这样做

select * from [NumTest] where value LIKE '[a]+[b]+'
但它返回零行


有谁能帮助我如何在SQL Server的
中使用特殊字符,如

以下是一些可以使用的方法:

(编辑-在O/p注释之后,不需要注释的零件)

在CTE中,选择左半部分全部
a
-s和右半部分全部
b
-s的值。然后找到最大长度,用它来复制前面需要的空白


(编辑后)

您所请求的内容被写为
,如“%ab%”
,但这对您没有多大好处,因为它将返回
abababa
。如果您想要精确的输出,您已经显示出需要很多不同的逻辑。检查我的答案这是得到的结果好,但它看起来很复杂,我。我不需要任何前导空格,只是我的question@ILLUMINATI7590啊,在这种情况下,您可以使用内部选择从CTE
--WITH CTE_GoodValues AS 
--(
    SELECT value
    FROM Table1
    WHERE LEFT(VALUE,LEN(VALUE)/2) = REPLICATE('a',LEN(VALUE)/2)
        AND RIGHT(VALUE,LEN(VALUE)/2) = REPLICATE('b',LEN(VALUE)/2)
        AND LEN(VALUE)%2=0
--)
--SELECT REPLICATE(' ', (SELECT MAX(LEN(VALUE))/2 FROM CTE_GoodValues)- LEN(VALUE)/2) + VALUE
--FROM CTE_GoodValues