在SQL Server中如何从列中删除第一个字符

6

我有一张表格,叫做A表,表中有一个字段叫做A。字段A中有如下数值:

Street A
Street B
,Street C
Street D
etc

我想知道是否有任何SQL可以让我在Field A中删除第一个字符,其中有一个,。

我不知道从哪里开始,我可以选择所有具有Field A中逗号的行,但是当尝试删除它时,我不知道从哪里开始。

4个回答

13

如果您不想在意长度,STUFF 是正确的选择:

UPDATE YourTable
SET    YourCol = STUFF(YourCol, 1, 1, '')
WHERE YourCol LIKE ',%'

要明确的是,在使用SUBSTRING时,没有特别需要关注长度的必要 - 如果超过指定长度也没关系,可以将其设置为最大整数。 - Martin Smith

4
你可以使用 RIGHTLENRTRIM 函数。
UPDATE TableA
SET FieldA = RIGHT(RTRIM(FieldA), LEN(FieldA) - 1)
WHERE FieldA LIKE ',%'

Example


@MartinSmith 感谢指出这一点,我已经更新代码使用了 datalength 函数。 - anon
当然,如果它们的列数据类型是UNICODE或者它们在双字节排序规则下,这可能不正确。 - Martin Smith
我已经更新了Unicode,但不确定双字节排序是否会对数据长度产生影响。 - anon
这是一个关于SQL Server中char、nchar、varchar和nvarchar之间区别的例子。 - Martin Smith
如果你决定使用 RIGHT,最简单的方法可能是 RIGHT(RTRIM(FieldA), LEN(FieldA) - 1) - Martin Smith
这似乎有些过头了,使用RIGHT函数而不是SUBSTRING函数是否有任何好处? - anon

3
UPDATE YourTable
SET    YourCol = SUBSTRING(YourCol, 2, 0+0x7fffffff) 
WHERE YourCol LIKE ',%'

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接