关于字符串操作
请问,如何我要取这样的数据,在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从字符串中取指定位置,指定长度字符串