Arn*_*sss 4 sql-server sqlparameter
我想比较一个字符串,看它是否包含一个子字符串,但是,当我使用一个变量时,它应该为false时评估为true.
知道为什么会这样,以及如何解决这个问题?
DECLARE @Match VARCHAR
SET @Match = '%Matching%'
SELECT CASE WHEN 'Does This Match' LIKE @Match THEN 1 ELSE 0 END -- 1
SELECT CASE WHEN 'Does This Match' LIKE '%Matching%' THEN 1 ELSE 0 END -- 0
Run Code Online (Sandbox Code Playgroud)
这是一个愚蠢的问题.如果您VARCHAR在a中声明某些内容,CAST则会自动调整VARCHAR的大小正确到VARCHAR(30).但是,在这种情况下,您只有一个VARCHAR字符.因此,当您将其设置为%Matching%因为@Match只有一个字符长时,@Match将设置为仅%与该短语匹配的通配符(以及任何短语!).
DECLARE @Match VARCHAR(50)
那样做,然后工作.
完整示例:
DECLARE @BadMatch VARCHAR
SET @BadMatch = '%Matching%'
DECLARE @Match VARCHAR(20)
SET @Match = '%Matching%'
SELECT @BadMatch, @Match
SELECT CASE WHEN 'Does This Match' LIKE @Match THEN 1 ELSE 0 END -- 1
SELECT CASE WHEN 'Does This Match' LIKE '%Matching%' THEN 1 ELSE 0 END -- 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |