SQL server uses "IF variable LIKE pattern"

Why is this not working?

DECLARE @str varchar = '######' IF @str LIKE '%###%' SELECT 1 

but it works

 IF '######' LIKE '%###%' SELECT 1 

UPDATE

why does it work

 DECLARE @Comment varchar(255) = '[ABCD]' IF @Comment LIKE '%[%-%-%-%]%' SELECT 1 

however this does not work?

 DECLARE @Comment nvarchar(255) = '[ABCD]' IF @Comment LIKE '%[%-%-%-%]%' SELECT 1 
+5
source share
2 answers

Add to a variable length.

 DECLARE @str varchar = '######' IF @str LIKE '%###%' SELECT 1 

is the same as (implicit cast will change it to '#')

 DECLARE @str varchar(1) = '######' /* IF '#' LIKE '%###%' SELECT 1 */ IF @str LIKE '%###%' SELECT 1 

This will work:

 DECLARE @str varchar(20) = '######' IF @str LIKE '%###%' SELECT 1 
+4
source

try declaring the size of your varchar

 DECLARE @str varchar(50) = '######' SELECT 1 WHERE @str LIKE '%###%' 
+2
source

All Articles