在SQL中,如何删除表中特定列值的前4个字符?列名为“Student Code”,示例为“ABCD123Stu1231”。 我想从我的表中删除所有记录
Student Code
ABCD123Stu1231
请指引我
SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn
希望这是有意义的。
再编辑一下——我刚刚读了Andrew的回复,他很可能理解对了,我可能错了。如果是这种情况(并且你想要更新表而不仅仅是返回修改过的结果),你可以这样做:
UPDATE MyTable SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 4)
他在正确的轨道上,但他的解决方案将保持字符串开始的4个字符,而不是丢弃上述4个字符。
试试这个:
update table YourTable set YourField = substring(YourField, 5, len(YourField)-3);
这里有一个简单的模型,你要做什么:)
CREATE TABLE Codes ( code1 varchar(10), code2 varchar(10) ) INSERT INTO Codes (CODE1, CODE2) vALUES ('ABCD1234','') UPDATE Codes SET code2 = SUBSTRING(Code1, 5, LEN(CODE1) -4)
所以,使用最后一个语句对你想修剪的字段:)
SUBSTRING函数缩减Code1,从第5个字符开始,一直缩减到Code1长度小于4(开始时跳过的字符数)。
为什么使用LEN,这样就有了两个字符串函数?你只需要在…
...SUBSTRING (Code1, 5, 8000)...
Stuff(someColumn, 1, 4, '')
这就是说,从第一个1字符位置开始,不使用任何''替换4字符
1
''
4
完整的东西
DECLARE @v varchar(10) SET @v='#temp' select STUFF(@v, 1, 1, '') WHERE LEFT(@v,1)='#'
你也可以在SQL中这样做。
substring(StudentCode,4,len(StudentCode))
语法
substring (ColumnName,<Number of starting Character which u want to remove>,<length of given string>)
内置的修剪功能非常适合这个目的。
SELECT trim(both 'ag' from 'asdfg'); btrim ------- sdf (1 riga)
http://www.postgresql.org/docs/8.1/static/functions-string.html
如果你必须删除前面的几个特殊字符,比如#,这是一个很好的例子:
#
UPDATE tblInvalidID SET [ColumnName] =stuff(ColumnName, 1, charindex('#', ColumnName), ' ')
这将是很好的共享,对于DB2使用: INSERT(someColumn, 1, 4, '') < / p >
INSERT(someColumn, 1, 4, '')
DB2中不支持Stuff
Stuff
试试这个。100%的工作
UPDATE Table_Name SET RIGHT(column_name, LEN(column_name) - 1)
,,
当值的长度小于4时,顶部答案不合适。
你将得到“无效的长度参数传递给正确的函数”;因为它不接受负号。使用CASE语句:
SELECT case when len(foo) >= 4 then RIGHT(foo, LEN(foo) - 4) else '' end AS myfoo from mytable;
小于4的值会出现以下令人惊讶的行为,而不是错误,因为将负值传递给RIGHT会修饰第一个字符,而不是整个字符串。使用RIGHT(MyColumn, -5)更有意义。
RIGHT(MyColumn, -5)
下面是一个比较你使用顶部答案“长度- 5”时的结果的例子。而不是"-5"
create temp table foo (foo) as values ('123456789'),('12345678'),('1234567'),('123456'),('12345'),('1234'),('123'),('12'),('1'), (''); select foo, right(foo, length(foo) - 5), right(foo, -5) from foo; foo len(foo) - 5 just -5 --------- ------------ ------- 123456789 6789 6789 12345678 678 678 1234567 67 67 123456 6 6 12345 1234 234 123 3 12 1