为什么这不起作用?
DECLARE @str varchar = '######'
IF @str LIKE '%###%' SELECT 1
但这有效
IF '######' LIKE '%###%' SELECT 1
更新
为什么会起作用
DECLARE @Comment varchar(255) = '[A-B-C-D]'
IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
然而这不起作用?
DECLARE @Comment nvarchar(255) = '[A-B-C-D]'
IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
答案 0 :(得分:4)
添加到您的变量类型长度。
DECLARE @str varchar = '######'
IF @str LIKE '%###%' SELECT 1
与(隐式演员将其更改为'#')相同
DECLARE @str varchar(1) = '######'
/* IF '#' LIKE '%###%' SELECT 1 */
IF @str LIKE '%###%' SELECT 1
这将有效:
DECLARE @str varchar(20) = '######'
IF @str LIKE '%###%' SELECT 1
答案 1 :(得分:2)
尝试声明varchar的大小
DECLARE @str varchar(50) = '######'
SELECT 1 WHERE @str LIKE '%###%'
答案 2 :(得分:1)
如果不使用指定的类型长度,它将使用最少的代码页长度。这两个变量分别是varchar 1和nvarchar2。因此,如果范围正常,则实际上。
DECLARE @str varchar = '######'
SELECT DATALENGTH(@str)
DECLARE @str1 varchar(20) = '######'
select DATALENGTH(@str1)
DECLARE @str3 nvarchar = '######'
SELECT DATALENGTH(@str3)
DECLARE @str4 nvarchar(20) = '######'
select DATALENGTH(@str4)