我有一个表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 "。我需要删除名称开头的逗号和空格。
答案 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 Crap
。 PATINDEX()会在你的单词中找到第一个字母并在其前面删除所有内容。
即使没有主要的垃圾,它也能正常工作:
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)=', '
这只会更新前两个字符包含','
的位置