E.g。 输入字符串:“我是工程师” 预期产出:“我是工程师”
答案 0 :(得分:4)
您可以使用stuff()
:
select stuff('I am an Engineer',1,1,'')
返回:am an Engineer
如果你想修剪字符串左侧的空格,你可以使用ltrim()
select ltrim(stuff('I am an Engineer',1,1,''))
返回:am an Engineer
rextester演示:http://rextester.com/BQHYR97427
如果要删除字符串中第一个字符实例,可以在案例表达式中使用charindex()
和stuff()
来确保字符在字符串中,如下所示:
declare @str varchar(32) = 'I am an Engineer';
declare @char char(1) = 'n'
select str = case when charindex(@char,@str) > 0
then stuff(@str,charindex(@char,@str),1,'')
else @str
end
返回:I am a Engineer
rextester演示:http://rextester.com/UZCVR72854
答案 1 :(得分:2)
尝试使用STRING_SPLIT
功能和XML
,您可以尝试一下
从SQL 2016开始
SELECT VALUE + ' ' FROM STRING_SPLIT ('abcd xyz d pqrs d wxy',' ') WHERE LEN(Value) > 1
FOR XML PATH ('')
abcd xyz pqrs wxy
对于较低版本的SQL,您可能需要创建一个函数来执行该过程
CREATE FUNCTION dbo.SplitString(@String NVARCHAR(MAX), @Delimiter CHAR(1))
RETURNS @Results TABLE (Result NVARCHAR(MAX))
AS
BEGIN
DECLARE @Index INT
DECLARE @Data NVARCHAR(MAX)
SELECT @Index = 1
IF @String IS NULL RETURN
WHILE @Index != 0
BEGIN
SELECT @Index = CHARINDEX(@Delimiter, @String)
IF @Index != 0
SELECT @Data = LEFT(@String, @Index - 1)
ELSE
SELECT @Data = @String
INSERT INTO @Results(Result) VALUES (@Data)
SELECT @String = RIGHT(@String, LEN(@String) - @Index)
IF LEN(@String) = 0 BREAK
END
RETURN
END
答案 2 :(得分:1)
使用 RIGHT 功能
SELECT RIGHT('Your String',len('Your String')-1)
答案 3 :(得分:0)
为什么不始终始于字符串的第2位?即:
DECLARE @string VARCHAR(100)
SET @string = 'I am an Engineer'
SELECT LTRIM(SUBSTRING(@string, 2, LEN(@string) ))
...将返回:'我是工程师'