我想知道如果字段长度大于5,是否有办法从varchar字段中选择其余字符。
例如:
ID_Num
99984
99923GF
99100EFK
99341LM
99145RL4C
我想要得到的是什么
ID_Num
GF
EFK
LM
RL4C
答案 0 :(得分:7)
STUFF
非常适合这样的事情:
SELECT STUFF(ID_Num,1,5,'')
FROM YourTable
WHERE LEN(ID_Num) > 5;
STUFF
用于“替换”字符串中的字符。在这种情况下,它将用字符串''
替换位置1(字符串的开头)的后5个字符;因此将其删除。
答案 1 :(得分:3)
使用RIGHT
和LEN
可以达到预期的结果。
SELECT RIGHT(ID_Num, LEN(ID_Num) - 5) AS ID_Num
FROM TestTable
WHERE LEN(ID_Num) > 5;
或使用SUBSTRING
SELECT SUBSTRING(ID_Num, 6, LEN(ID_Num)) AS ID_Num
FROM TestTable;
包含示例数据的演示
DECLARE @TestTable TABLE (ID_Num VARCHAR (20));
INSERT INTO @TestTable (ID_Num) VALUES
('99984'),
('99923GF'),
('99100EFK'),
('99341LM'),
('991456RL4C');
SELECT RIGHT(ID_Num, LEN(ID_Num) - 5) AS ID_Num
FROM @TestTable
WHERE LEN(ID_Num) > 5;
输出:
ID_Num
-------
GF
EFK
LM
6RL4C