[英]SQL WHERE Like Clause not returning all results
我有一個奇怪的,我過去幾個小時都在摸不着頭腦。
我有一個相對簡單的TSQL
SELECT
LTRIM(RTRIM(bom_comp_code)) [bom_comp_code]
, bom_product
, bom.actual_partnumber
FROM
dbo.MRP_ALL bom
WHERE
bom.bom_product = 'F00434'
這將返回500行結果,如 - 完美
[bom_comp_code] [bom_product] [actual_partnumber]
M03275 F00434 99292922
M03275 F00434 99292922
B01869 F00434 99292922
B01869 F00434 99292922
M03275 F00434 99292922
M03275 F00434 99292922
B01869 F00434 99292922
...
...
B01869 F00434 99292922
B01869 F00434 99292922
M03275 F00434 1110-011
M03275 F00434 1110-011
現在我只對以M開頭的bom_comp_code感興趣,所以我自然會使用以下TSQL
SELECT
LTRIM(RTRIM(bom_comp_code)) [bom_comp_code]
, bom_product
, bom.actual_partnumber
FROM
dbo.MRP_ALL bom
WHERE
bom.bom_product = 'F00434'
AND LTRIM(RTRIM(bom.bom_comp_code)) like 'M%'
但這只會返回一行!
[bom_comp_code] [bom_product] [actual_partnumber]
M03275 F00434 1110-011
我不能為我的生活理解為什么當表中的224符合我的標准時,只返回一行
我認為LTRIM / RTRIM在bom_comp_code字段周圍有空格,但這不起作用。
我也在bom_product周圍試過這個以防萬一。
有什么可能阻止我的所有行返回?
使用LEFT()
AND LEFT(bom_comp_code, 1) = 'M'
如果你真的有空間
AND LEFT(LTRIM(bom_comp_code), 1) = 'M'
要檢查你的字符串開頭是否有特殊字符,然后像這樣調試
SELECT LEFT(LTRIM(bom_comp_code), 1) as first_char,
ASCII (LEFT(LTRIM(bom_comp_code), 1)) as ascii_number
LTRIM(bom_comp_code)
FROM dbo.MRP_ALL bom
我有一個類似的問題,我有特殊的角色就像上面提到的“Juan Carlos Oropeza”。
使用此答案https://stackoverflow.com/a/14211957/7141065中的功能,我能夠更新相關列並在此之后正常運行查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.