有没有办法编辑 SQL 中的子字符串?
Is there a way to edit a substring in SQL?
例如,假设我有一个 select 查询:
SEL SUBSTRING(TXT,5,10) FROM RANDOM_DB.BDAYINFO
和这个 returns 之类的
01DEC99/M/
还有
01DEC9999/
有以这两种格式返回的数据
我想做的是去掉第一个末尾的 /M/ 和最后一个末尾的 /。现在我专注于摆脱 /M/.
目前我尝试过的是:
SEL SUBSTRING(TXT,5,10) CASE WHEN SUBSTRING(TXT,5,10) IS LIKE '%/M/' THEN SEL SUBSTRING(TXT,5,7) FROM RANDOM_DB.BDAYINFO
这是说子字符串以 '/M/' 结尾,在这种情况下代表男性
我也试过像这样使用 TRIM:
SELECT TRIM('/M/' FROM SUBSTRING(TXT,5,10)) FROM RANDOM_DB.BDAYINFO
使用这个 CASE 语句:
SELECT
CASE
WHEN SUBSTRING(TXT,5,10) LIKE '%/M/' THEN SUBSTRING(TXT,5,7)
WHEN SUBSTRING(TXT,5,10) LIKE '%/' THEN SUBSTRING(TXT,5,9)
ELSE SUBSTRING(TXT,5,10)
END
FROM RANDOM_DB.BDAYINFO
试试这个方法 - 使用 LEFT(Samplevalue,CHARINDEX('/',Samplevalue + '/')-1)
DECLARE @Samples TABLE (Samplevalue VARCHAR(30));
INSERT INTO @Samples VALUES ('01DEC99/M/ '),('01DEC9999/');
SELECT LEFT(Samplevalue,CHARINDEX('/',Samplevalue + '/')-1) AS EXPECTED_RESULT FROM @Samples;
例如,假设我有一个 select 查询:
SEL SUBSTRING(TXT,5,10) FROM RANDOM_DB.BDAYINFO
和这个 returns 之类的
01DEC99/M/
还有
01DEC9999/
有以这两种格式返回的数据
我想做的是去掉第一个末尾的 /M/ 和最后一个末尾的 /。现在我专注于摆脱 /M/.
目前我尝试过的是:
SEL SUBSTRING(TXT,5,10) CASE WHEN SUBSTRING(TXT,5,10) IS LIKE '%/M/' THEN SEL SUBSTRING(TXT,5,7) FROM RANDOM_DB.BDAYINFO
这是说子字符串以 '/M/' 结尾,在这种情况下代表男性
我也试过像这样使用 TRIM:
SELECT TRIM('/M/' FROM SUBSTRING(TXT,5,10)) FROM RANDOM_DB.BDAYINFO
使用这个 CASE 语句:
SELECT
CASE
WHEN SUBSTRING(TXT,5,10) LIKE '%/M/' THEN SUBSTRING(TXT,5,7)
WHEN SUBSTRING(TXT,5,10) LIKE '%/' THEN SUBSTRING(TXT,5,9)
ELSE SUBSTRING(TXT,5,10)
END
FROM RANDOM_DB.BDAYINFO
试试这个方法 - 使用 LEFT(Samplevalue,CHARINDEX('/',Samplevalue + '/')-1)
DECLARE @Samples TABLE (Samplevalue VARCHAR(30));
INSERT INTO @Samples VALUES ('01DEC99/M/ '),('01DEC9999/');
SELECT LEFT(Samplevalue,CHARINDEX('/',Samplevalue + '/')-1) AS EXPECTED_RESULT FROM @Samples;