2012-08-23 99 views
1

的我有一些数据在这里,是这样的:SQL摆脱多余的空格

'US  ' -- (5 spaces) 

,我有超过300次的记录是这样,有没有摆脱那些5位的方法吗?

+0

您正在使用哪个数据库? – EthanB

回答

3

您可以使用RTRIMLTRIM删除尾随或前导空格。

如果你只是选择了记录:

SELECT RTRIM(State) AS State 
FROM YourTable 

如果要更新表以删除空格:

UPDATE YourTable 
SET State = RTRIM(State) 
+0

所以'更新yourtable设置状态= RTRIM(状态)'它会拿出额外的空间和更新它已经有什么减去空格? – user979331

+1

正确。在你的例子中,它基本上转化为'UPDATE YourTable SET State = RTRIM('US')'它变成'UPDATE YourTable SET State ='US''如果你有多个记录,每个记录都会被更新为' RTRIM'ed。 – LittleBobbyTables

+0

假如我有一条记录说“美国”,另一条记录“加拿大”会让另一条记录闪烁吗?我希望它不是 – user979331

0

大多数数据库支持RTRIM()或TRIM()功能。

您也可以用空字符串代替空格:

select replace('abcde ', ' ', '') 

(替换功能可以被称为东西在不同的数据库不同。)

另一种可能性是,基础类型为CHAR,而不是VARCHAR。在您的示例中,该列可能会被声明为char(7)而不是varchar(7)。如果是这种情况,那么您不能删除空格,因为该值被填充为七个字符。

在这种情况下最好的做法是将定义更改为varchar(7)。

+0

'一些随机文本'会变成'somerandomtext' –

0

使用RTRIM删除字符串后的任何尾随空白。

SELECT RTRIM(COL1)FROM TBL1

此外,还可以使用LTRIM,以消除任何前导空白。

据我所知,这个函数适用于SQL Server,Oracle,MySQL和PL/SQL。