sql字符串替换

来源:百度知道 编辑:UC知道 时间:2024/05/05 18:21:30
有如下表:
id name
--------------------
1 第一(名字)老大
2 第二(名字)老二
3 第三(名字)老三
4 第四(名字)老四

帮我写个sql 去掉name里的 第几(名字) ,只剩下 老大,老二、、、
如:
id name
--------------------
1 老大
2 老二
3 老三
4 老四
id name
--------------------
1 第一12(名字)老大
2 第二1(名字)老二
3 第三seq(名字)老三
4 第四we(名字)老四
name字段的位数不确定怎么做?我想要个把“)”前面的字符去掉?

select id,stuff(name,1,6,'') as name from t_table

--stuff(列名,从第几个字符开始,长度,替换成什么)
--如上例,就是从第一个字符“第”开始,长度为6,也就是“第N(名字)”替换成空字符

--对于变长的。。那么这个。 就行了
select id,substring(name,charindex(')',name)+1,len(name)) as name from t_table

如果确定')'右边只有2个汉字的话用yhx928的Right方法就可以了
如果不确定,需要用以下方法

--sql server
update table_name--表名
set name=substring(name,charindex(')',name)+1,len(name))
--oracle
update table_name--表名
set name=substr(name,instr(name,')')+1)

charindex()和instr()是找对应字符的位置的函数,两者的参数位置刚好相反的。

首先是打开操作对象所在的数据库
use 库名
update 表名 set id name=right(id name,2);
执行这条语句就可以了
注:如果一个汉字占两位的话,要把2改成4

用update更新一下不就得了,有啥难。