SQL服务器使用"IF变量LIKE模式"

Fal*_*ame 5 sql-server

为什么这不起作用?

DECLARE @str varchar = '######'

IF @str LIKE '%###%' SELECT 1
Run Code Online (Sandbox Code Playgroud)

但这很有效

IF '######' LIKE '%###%' SELECT 1
Run Code Online (Sandbox Code Playgroud)

UPDATE

为什么会这样

DECLARE @Comment varchar(255) = '[A-B-C-D]'

IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
Run Code Online (Sandbox Code Playgroud)

但这不起作用?

DECLARE @Comment nvarchar(255) = '[A-B-C-D]'

IF @Comment LIKE '%[%-%-%-%]%' SELECT 1
Run Code Online (Sandbox Code Playgroud)

Luk*_*zda 4

添加到您的变量类型长度。

DECLARE @str varchar = '######'

IF @str LIKE '%###%' SELECT 1
Run Code Online (Sandbox Code Playgroud)

与(隐式转换会将其更改为“#”)相同

DECLARE @str varchar(1) = '######'

/* IF '#' LIKE '%###%' SELECT 1 */
IF @str LIKE '%###%' SELECT 1
Run Code Online (Sandbox Code Playgroud)

这将起作用:

DECLARE @str varchar(20) = '######'

IF @str LIKE '%###%' SELECT 1
Run Code Online (Sandbox Code Playgroud)