如何在SQL TRIM

时间:2016-01-18 12:54:58

标签: sql sql-server

我有一个表Employee,其中一些值以","开头。因此,我需要使用 LTRIM在 SELECT查询时删除名称开头的逗号空格 () - SQL-Server。

我的表:员工

CREATE TABLE Employee
(
PersonID int,
ContactName varchar(255),
Address varchar(255),
City varchar(255)
); 

INSERT INTO Employee(PersonID, ContactName, Address, City)
VALUES ('1001',', B. Bala','21, Car Street','Bangalore'); 

SELECT PersonID, ContactName, Address, City FROM Employee

此处ContactName列的值为" ,B。Bala "。我需要删除名称开头的逗号空格

4 个答案:

答案 0 :(得分:4)

唉,SQL Server不支持指定LTRIM()字符的ANSI标准功能。

在这种情况下,您可以使用:

(case when ContactName like ', %' then stuff(ContactName, 1, 2, '')
      else ContactName
 end)

答案 1 :(得分:1)

你也可以使用REPLACE .....

例如

REPLACE( ' ,Your String with space comma', ' ,', '')

答案 2 :(得分:1)

您可以使用PATINDEX()来完成此操作。

DECLARE @Text VARCHAR(50) = ', Well Crap';

SELECT STUFF(@Text, 1, PATINDEX('%[A-z]%', @Text) - 1, '');

这会输出Well CrapPATINDEX()会在你的单词中找到第一个字母并在其前面删除所有内容。

即使没有主要的垃圾,它也能正常工作:

DECLARE @Text VARCHAR(50) = 'Mister Roboto';

SELECT STUFF(@Text, 1, PATINDEX('%[A-z]%', @Text) - 1, '');

这会输出Mister Roboto

如果没有有效字符,请说ContactName为, 9132124, :::,这会输出NULL,如果您想获得空白结果,可以使用COALESCE()

DECLARE @Text VARCHAR(50) = ', 9132124, :::';

SELECT COALESCE(STUFF(@Text, 1, PATINDEX('%[A-z]%', @Text) - 1, ''), '');

这将输出一个空字符串。

答案 3 :(得分:1)

UPDATE dbo.Employee
SET        
dbo.Employee.ContactName = replace(LEFT(ContactName, 2),', ','')
+ SUBSTRING (ContactName, 3, len(contactname))
    where LEFT(ContactName, 2)=', '

这只会更新前两个字符包含','

的位置