Sql server SQL server使用";如果是类似变量的模式;
为什么这不起作用Sql server SQL server使用";如果是类似变量的模式;,sql-server,Sql Server,为什么这不起作用 DECLARE @str varchar = '######' IF @str LIKE '%###%' SELECT 1 DECLARE @Comment nvarchar(255) = '[A-B-C-D]' IF @Comment LIKE '%[%-%-%-%]%' SELECT 1 但这是有效的 IF '######' LIKE '%###%' SELECT 1 DECLARE @Comment varchar(255) = '[A-B-C-D]' IF
DECLARE @str varchar = '######'
IF @str LIKE '%###%' SELECT 1
DECLARE @Comment nvarchar(255) = '[A-B-C-D]'
IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
但这是有效的
IF '######' LIKE '%###%' SELECT 1
DECLARE @Comment varchar(255) = '[A-B-C-D]'
IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
更新
为什么会这样
IF '######' LIKE '%###%' SELECT 1
DECLARE @Comment varchar(255) = '[A-B-C-D]'
IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
但是这不起作用
DECLARE @str varchar = '######'
IF @str LIKE '%###%' SELECT 1
DECLARE @Comment nvarchar(255) = '[A-B-C-D]'
IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
添加到变量类型长度
DECLARE @str varchar = '######'
IF @str LIKE '%###%' SELECT 1
与相同(隐式强制转换将其更改为“#”)
这将有助于:
DECLARE @str varchar(20) = '######'
IF @str LIKE '%###%' SELECT 1
尝试声明varchar的大小
DECLARE @str varchar(50) = '######'
SELECT 1 WHERE @str LIKE '%###%'
如果您不使用specify type length,它将使用最小代码页长度。这包括varchar 1和nvarchar 2。所以,实际上,如果作用域正常工作
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)
关于您的编辑,请参见,虽然您的代码可能会作为答案进行更正,但详细说明您的代码的作用,它可以提高您答案的质量。签出文章:谢谢@LuFFy,我现在正在修复。