使用 SQL 语句去除、删除数据库中的空格、回车字符的方法
日常在处理数据数据的时候,经常都有用户在操作一些系统时,把数据直接从 Excel
复制到系统,然后数据保存在数据库里边去了,但是正是这样的复制动作,把 Excel
的单元格的空格或者跳行(回车)的格式都保存在了数据库里边,使得查看数据或
者数据在被使用的时候出现了问题,那么如何通过 SQL 语句可以把空格或者回车等
的格式字符去掉呢?有如下的办法
1.去掉回车的字符格式:
REPLACE(filed_name,CHAR(13)+CHAR(10),SPACE(0))
其中的 filed_name 代表 数据库的字段名,使用时候替换即可,使用范例如下
update ieel00h set el_name1= REPLACE(el_name1,CHAR(13)+CHAR(10),SPACE(0))
where el_no like 'L%'
2.去空格
可以通过 rtrim 去除右边空格, ltrim 去除左边空格 。使用范例如下:
update ieel00h set el_name1=rtrim(el_name1)
where el_no like 'L%'
update ieel00h set el_name1=Ltrim(el_name1)
where el_no like 'L%'
但是,当存放的数据字符串中间有太多的空格(甚至具体多少空格,是全角的还是
半角输入法下的空格也不清楚),又应该如何处理呢?
一个比较保守的方法,一定凑效:
先通过 SQL 查询这个字段出来,
然后直接复制这个字段其中的内容,贴到空白处,
再选择其中的空格内容进行复制,
再使用 replace 函數處理,如下:
update ieel00h set el_name1=REPLACE(el_name1,' ',' ') where el_no like
'A0271001%'
再査,已經只有一個空格了。
附:
Sqlserver 中 Replace 替换函数用法
REPLACE 函数是用第三个表达式替换第一个字符串表达式中出现的
所有第二个给定字符串表达式的方法。
语法:
REPLACE ('string_expression1','string_expression2','string_expression3')
参数
'string_expression1'
待搜索的字符串表达式。string_expression1 可以是字符数据或二进制
数据。
'string_expression2'
待查找的字符串表达式。string_expression2 可以是字符数据或二进制
数据。
'string_expression3'
替换用的字符串表达式。string_expression3 可以是字符数据或二进制
数据。
返回类型:
如果 string_expression(1、2 或 3)是支持的字符数据类型之一,则
返回字符数据。如果 string_expression(1、2 或 3)是支持的 binary
数据类型之一,则返回二进制数据。
通俗理解的格式为:
Update 表名 SET 要替换的列=REPLACE(要替换的列,被替换的字符,
替换后的字符)
示例 SQL 语句:
Update tableName SET columeName = REPLACE(columeName, 'a', 'b')
示例:
下例用 xxx 替换 abcdefghi 中的字符串 cde。
SELECT REPLACE('abcdefghicde','cde','xxx') GO
下面是结果集:
------------ abxxxfghixxx (1 row(s) affected)
用 REPLACE 函数的时候要注意带 where 条件来限制,否则一旦替换出
错了,要恢复是比较麻烦的,但也不是不可逆,还是可以恢复的,就
是在相同条件下反过来再执行一次 REPLACE 函数;另外就是要注意使
用时三个表达式的格式,一般第一个都为字段名,也可能是常量,字
符串格式的都需要带单引号。
灵 活 使 用 REPLACE 函 数 能 很 好 的 解 决 一 些 棘 手 的 问 题 , 特 别 是
REPLACE 函数里还可以嵌套 REPLACE 函数。