首页 > 解决方案 > 无法删除行中的尾随空格

问题描述

我有如下数据列:

'2020193'
'3208391'
'1038291'
'9349203'

数据类型是varchar,我无法将其更改为int(始终在此数据类型中管理的数据)。

我有一些带有尾随空格的行,例如:

' 2222928'
' 3213331'

我需要从一开始就删除那个尾随空格。我试过SUBSTRING()or TRIM()/RTRIM()/LTRIM(),但没有任何工作。

select (rtrim(ltrim(doc_id))) from bpm.sales where len(doc_id) = 8
select left(doc_id,2) from bpm.sales where len(doc_id) = 8
select charindex(' ',doc_id) from bpm.sales where len(doc_id) = 8

此外,当我尝试搜索以下数据时:

select doc_id from bpm.sales where doc_id = ' 2269203'

在列中存在的地方我什么也没得到。随着CHARINDEX()我得到0.

有人可以向我解释这种行为并提出解决方案吗?

标签: sqlsql-server

解决方案


您可以删除所有内容,直到您想要的第一个字符:

select stuff(doc_id, 1, patindex('%[^0-9a-zA-Z]%', doc_id) - 1, '')
        

推荐阅读