SQL2000提取指定字符

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:58:21
例如表中有一列是这样的,:12-15.我想把12-15中的'-'前面的字符提取出来复制到同一个表中的另一列,请问在SQL2000中如何操作~
page1 page2
1 1
3 3
7 7-11
1 1
12 12
14 14-14
大概的表就是这样,page1是int类型page2是varchar类型
就是将page2中的7-11和14-14中"-"前面的字段取出来复制到page1中相应的字段中~
我不太懂SQL,前面两位回答的能不能解释下,我看的不太明白~

update 表名 --你要修改的表名
set 目标列名=left(源数据列名,charindex('-',源数据列名)-1)

表名 --你要修改的表名
目标列名 --你要更新的列名
源数据列名 --你的原始数据的列名

我的方法是left(a,b)把字符串a从左截取b位,其中b是数字。
charindex('-',c)返回‘-’在c字符串中的位置 返回值是数字。
left(源数据列名,charindex('-',源数据列名)-1)意思就是截取 源数据列 中的第一个'-'之前的字符串

--
update 表名
set page1=left(page2,charindex('-',page2)-1)
where
charindex('-',page2)>0

update 表名 set 目标列名=substr(源数据列名,1,2)

update 表
set page1 = a.page1
from
(select page2,convert(int,page2) page1
from 表
where charindex('-',page2) = 0
union all
select page2,convert(int,left(page2,charindex('-',page2)-1)) page1
from 表
where charindex('-',page2) > 0) a,
表 b
where a.page2 = b.page2

------
原理就是aab2009aab 说的。