我有一个奇怪的事情,过去几个小时我一直在摸不着头脑。
我有一个相对简单的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行结果,例如 - perfect
[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周围试过这个以防万一。
有什么可能阻止我的所有行返回?
答案 0 :(得分:1)
USE 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
答案 1 :(得分:0)
我遇到了类似的问题,我就像上面提到的“Juan Carlos Oropeza”一样有特殊的角色。
使用此回答https://stackoverflow.com/a/14211957/7141065中的函数,我能够更新相关列并在此之后正常运行查询。