我有一些字串的表。我想使用條件字串進行選擇 = eqauls
我沒有任何其他字串......
當我
有時,選擇回傳更多行:有什么問題?
DECLARE @C VARCHAR(2) = 'A' SPACE(1)
DECLARE @T TABLE (id INT NOT NULL, string VARCHAR(200) NOT NULL)
INSERT INTO @T
(
id,
string
)
VALUES
( 1, 'A'), (2,'A' SPACE(1))
SELECT * FROM @T WHERE string = @C--With space only
回傳:
id string
1 A
2 A
我知道選擇 LIKE '%....' 很熱。
我想知道為什么 TSQL 回傳更多行。
SQL 2019,MSSQL 版本 18.9.2
uj5u.com熱心網友回復:
SQL Server 在將字串與=. 在這里閱讀更長的描述:https : //dba.stackexchange.com/a/10511/7656
最重要的是,您無法使用=. 使用LIKE沒有任何%代替。
給定的
CREATE TABLE T (id INT NOT NULL, string VARCHAR(200) NOT NULL)
INSERT INTO T VALUES (1, 'A')
INSERT INTO T VALUES (2, 'A ')
這個
SELECT id, len(string) len, datalength(string) datalength FROM T
結果是
| ID | 連 | 資料長度 |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
和
SELECT id FROM T WHERE string LIKE 'A '
會給你2。見http://sqlfiddle.com/#!18/2356c9/1
uj5u.com熱心網友回復:
您可以使用以下解決方案之一
-- Option 1: add to the filter the condition `DATALENGTH(@C) = DATALENGTH(string)` or 'DATALENGTH(@C) < DATALENGTH(string)'
SELECT * FROM @T WHERE string = @C and DATALENGTH(@C) <= DATALENGTH(string)
-- Option 2: Use `LIKE` and add the expresion '%'
SELECT * FROM @T WHERE string like @C '%'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326780.html
上一篇:檢查字串中的空格和np.NaN
