SQL返回最后一个空格右边的字符
我有一堆SQL格式的记录。请注意,这些空间并不一致SQL返回最后一个空格右边的字符,sql,sql-server,Sql,Sql Server,我有一堆SQL格式的记录。请注意,这些空间并不一致 WHAT IT LOOKS LIKE NOW WHAT I WANT IT TO RETURN ================================================================================ PartNumber PartNumber PartNumberStripped ---------
WHAT IT LOOKS LIKE NOW WHAT I WANT IT TO RETURN
================================================================================
PartNumber PartNumber PartNumberStripped
---------------------- --------------------------------------------------
AA BB 11A222 AA BB 11A222 11A222
AA BB 11B333 AA BB 11B333 11B333
BBBB 123456 BBBB 123456 123456
BB BB 2875309 BB BB 2875309 2875309
CC-BB RANDOMSTRING CC-BB RANDOMSTRING RANDOMSTRING
如何返回最后一个空格左侧的“零件号”以及去掉所有字符的零件号(仅返回最后一个空格右侧的字符)
以下内容接近我需要的内容,但在寻找空间时从左侧开始。一、 但是,需要它从右侧开始有效地搜索
SELECT PartNumber,
RIGHT (
PartNumber
,(LEN(PartNumber) - CHARINDEX (' ', PartNumber))
) AS PartNumberStripped
FROM tb_Parts
这段代码将返回以下内容,正如您在上面的“我希望它返回什么”一节中看到的那样,这并不完全正确
PartNumber PartNumberStripped
---------------------------------------
AA BB 11A222 BB 11A222
AA BB 11B333 BB 11B333
BBBB 123456 123456
BB BB 2875309 BB 2875309
CC-BB RANDOMSTRING RANDOMSTRING
提前谢谢 我想有时候只要把你的问题打出来就可以帮助你集中注意力,帮助你进行搜索查询。在发布这个问题几分钟后,我用“反向”找到了一个有效的解决方案
SELECT
PartNumber,
RIGHT(PartNumber, COALESCE(NULLIF(CHARINDEX(' ', REVERSE(PartNumber)), 0) - 1, LEN(PartNumber))) AS PartNumberStripped
FROM tb_Parts
解决方案的来源:我想有时候只要把你的问题打出来,就可以帮助你集中注意力,帮助你进行搜索查询。在发布这个问题几分钟后,我用“反向”找到了一个有效的解决方案
SELECT
PartNumber,
RIGHT(PartNumber, COALESCE(NULLIF(CHARINDEX(' ', REVERSE(PartNumber)), 0) - 1, LEN(PartNumber))) AS PartNumberStripped
FROM tb_Parts
解决方案的来源:另一个选项是
parsename()。。。前提是您的空间不超过4个
示例
Declare @YourTable Table ([PartNumber] varchar(50)) Insert Into @YourTable Values
('AA BB 11A222')
,('AA BB 11B333')
,('BBBB 123456')
,('BB BB 2875309')
,('CC-BB RANDOMSTRING')
Select *
,NewValue = parsename(replace(PartNumber,' ','.'),1)
From @YourTable
返回
PartNumber NewValue
AA BB 11A222 11A222
AA BB 11B333 11B333
BBBB 123456 123456
BB BB 2875309 2875309
CC-BB RANDOMSTRING RANDOMSTRING
另一个选项是parsename()
。。。前提是您的空间不超过4个
示例
Declare @YourTable Table ([PartNumber] varchar(50)) Insert Into @YourTable Values
('AA BB 11A222')
,('AA BB 11B333')
,('BBBB 123456')
,('BB BB 2875309')
,('CC-BB RANDOMSTRING')
Select *
,NewValue = parsename(replace(PartNumber,' ','.'),1)
From @YourTable
返回
PartNumber NewValue
AA BB 11A222 11A222
AA BB 11B333 11B333
BBBB 123456 123456
BB BB 2875309 2875309
CC-BB RANDOMSTRING RANDOMSTRING