日期:2014-05-18  浏览次数:20517 次

关于字符串操作
请问,如何我要取这样的数据,在SQL查询分析器里面如何操作

大众传播系一班
网络系二班

如果我要取‘系’前面的字符改如何操作

如果我要取 一班 又怎么操作

麻烦告诉我一下

谢谢


------解决方案--------------------
declare @sql varchar(1000)

set @sql = '大众传播系一班 '

select left(@sql,case when charindex('系',@sql)-1>=0 then charindex('系',@sql)-1 else '' end)


------解决方案--------------------
create table tb(col varchar(20)) 
insert into tb values('大众传播系一班')
insert into tb values('网络系二班')
go 
select left(col , charindex( '系',col) - 1) col from tb where charindex( '系',col) > 0

drop table tb 

/* 
col
-------------------- 
大众传播
网络

(所影响的行数为 2 行) 
*/
------解决方案--------------------
create table tb(col varchar(20)) 
insert into tb values('大众传播系一班')
insert into tb values('网络系二班')
go 
select col , left(col , charindex( '系',col) - 1) col_系 from tb where charindex( '系',col) > 0
/*
col col_系
-------------------- -------------------- 
大众传播系一班 大众传播
网络系二班 网络
(所影响的行数为 2 行)
*/
select col , left(col , charindex( '一班',col) - 1) col_一班 from tb where charindex( '一班',col) > 0
/*
col col_一班
-------------------- -------------------- 
大众传播系一班 大众传播系
(所影响的行数为 1 行)
*/
drop table tb 

------解决方案--------------------
--如果你的串中一定存在'系'这个字,可以直接用


declare @sql varchar(1000)

set @sql = '大众传播系一班 '

select left(@sql,charindex('系',@sql)-1)



--如果可能不存在'系'这个字,需要:

declare @sql varchar(1000) 

set @sql = '大众传播系一班 ' 

select left(@sql,case when charindex( '系 ',@sql)-1 >=0 then charindex( '系 ',@sql)-1 else ' ' end)
------解决方案--------------------
用charindex,与substring函数,
charindex用于定位指定字符串在整个字符串中的位置,
substring从字符串中取指定位置,指定长度字符串