我有一个SQL字符串,我需要删除最后一个字符(如果它只是一个A-Z),
原件:001-123456AB
预期:123456原件:001-123456
预期:123456
在这里我得到123456部分。现在我需要如果此SQL字符串包含字符,则 需要删除
(SUBSTRING(GeoNews,0,CHARINDEX('-',GeoNews))
答案 0 :(得分:3)
如果字母字符仅出现在字符串的末尾而不是中间,则可以执行以下操作:
select left(geonews, patindex('%[A-Z]%', geonews + 'A') - 1)
答案 1 :(得分:2)
您可以尝试以下方法:
select reverse(substring(geonews, patindex('%[0-9]%', geonews), len(geonews))) from (
select reverse(substring(geonews, charindex('-', geonews, 1) + 1, LEN(geonews))) geonews
from my_table
) a
它在连字符-
之后参与,将其反转,现在“结束”字母将在开头。我们将删除它(使用substring
和patindex
,它们将返回字符串中第一个出现的数字),然后将字符串反转。
答案 2 :(得分:0)
尝试一下:
DECLARE @String VARCHAR(100)
SET @String = '001-123456AB'
WHILE (@String is not null and @String LIKE '%[a-Z]')
BEGIN
-- Chop off the end character
SET @String =
CASE LEN(@String) WHEN 0 THEN @String
ELSE LEFT(@String, LEN(@String) - 1)
END
END
SELECT right(@String, len(@String) - charindex('-', @String))