sql - 无法删除行中的尾随空格
问题描述
我有如下数据列:
'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
.
有人可以向我解释这种行为并提出解决方案吗?
解决方案
您可以删除所有内容,直到您想要的第一个字符:
select stuff(doc_id, 1, patindex('%[^0-9a-zA-Z]%', doc_id) - 1, '')
推荐阅读
- python-3.x - 将数据转换为 CSV 文件
- c++ - 如何使用 FMOD 和 C++ 显示当前音乐位置?
- java - Android中的“找不到路径的一部分”错误
- sql - SQL Server SELECT STUFF 返回不正确的值
- r - 从R中的变量列表中创建一个变量?
- django - Django DRF:如何连接表并调用函数?
- django - Django + uWSGI + Nginx 立即导致上游过早关闭连接
- rust - 我在哪里可以找到 Rust 编程语言书中提到的源代码(.rs 文件)?
- r - R Highcharter:具有多个系列的多级钻取
- sql - 将日期序列调用到存储过程的最佳方法