首先建一张测试表:

create table teststring(name nvarchar(100));
insert into teststring
values
('张三,李四,王五,马六,萧十一,皇宫');

1.判断字符串中某字符(字符串)出现的次数,第一次出现的位置最后一次出现的位置:

查看’,’出现的次数

select LEN(name)-LEN(REPLACE(name,',','')) from teststring;

查看’,’第一次出现的位置:

select CHARINDEX(',',name) from teststring;

查看’,’最后一次出现的位置:

select len(name)-(CHARINDEX(',',REVERSE(name))-1) from teststring;

2.取出以’,’分隔开的字符(串),这个例子中就是’张三’、’李四’等

这是有规律的,首先应该想到有没有特定的系统函数实现,好像没有,其次就应该想到循环了。

当我把’张三’取出后,怎样把’张三,’去掉呢?

取’张三’不难,

select SUBSTRING(name,1,CHARINDEX(',',name)-1) from teststring;

如何把’张三,’去掉呢?开始我也不知道,baidu、google啊,关键字sql、split吧,总之我也是搜的

select STUFF(name,1,CHARINDEX(',',name),'') from teststring;

好像用replace也能实现

select REPLACE(name,substring(name,1,CHARINDEX(',',name)),'') from teststring;

那现在就差循环了,我很少写存储过程或函数的,语法都不记得,用的时候现查(经常用就记得了),我都写匿名的存储过程,哈哈

create table teststring2(name nvarchar(100));

declare @name nvarchar(100);
select @name= name from teststring;
while(CHARINDEX(',',@name)<>0)
begin
insert into teststring2 select SUBSTRING(@name,1,CHARINDEX(',',@name)-1);
set @name=STUFF(@name,1,CHARINDEX(',',@name),'');
set @i=@i+1;
end
insert into teststring2
select @name

select * from teststring2就可以看到了。

这只是表中只有一个字段的,如果多的话,用表变量应该就可以了。

下面例子:

  --当产品名称中包含括号的时候从产品名称中截取出括号内的内容
SELECT product_code
,CASE WHEN CHARINDEX('(',product_name) != 0 THEN
substring(product_name,CHARINDEX('(',product_name)+1,CHARINDEX(')',product_name)-CHARINDEX('(',product_name)-1)
end as pcode
,product_name
FROM product

SQL Server中判断字符串出现的位置及字符串截取的更多相关文章

  1. Sql Server中判断表、列不存在则创建的方法[转]

    一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法  ? ...

  2. Sql Server 中由数字转换为指定长度的字符串

    一个列的数据类型是 int ,从 1 开始自动增长,另一个列是字符串,现在想把 int 列转换成 九个字符,比如 1 转换后就是 000000001 ,添到字符串列,怎么实现呢? set @imaxU ...

  3. sql server中的怎么把数值型转换为字符串

    ①select cast(字段 as varchar) from 表名 ②select convert(varchar(50),字段) from 表名  

  4. sql server 中判断分组排序的使用示例

    现在需要查询一组数据,是对一列字段(column01)的数据分范围查询后分组排序: select (case when [column01] >0 AND [column01]<= 500 ...

  5. ASP.NET用SQL Server中的数据来生成JSON字符串

    原文引自:  作者: 缺水的海豚  来源: 博客园  发布时间: 2010-09-21 21:47  阅读: 6136 次  推荐: 0   原文链接   [收藏] 摘要:ExtJs用到的数据内容基本 ...

  6. sql server如何判断数据库是否存在

    如何判断数据库是否存在       执行下列的SQL,获得一张表,根据表的行数来判断. select * from master..sysdatabases where name=N'所查询的数据库名 ...

  7. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  8. SQL Server中截取字符串常用函数

    SQL Server 中截取字符串常用的函数: .LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截 ...

  9. SQL Server 中截取字符串常用的函数

    SQL Server 中截取字符串常用的函数: 1.LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要 ...

随机推荐

  1. canvas语法糖

  2. 算法笔记_213:第七届蓝桥杯软件类决赛部分真题(Java语言C组)

    目录 1 平方末尾 2 七星填数 3 打印数字 4 赢球票 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 平方末尾 平方末尾 能够表示为某个整数的平方的数字称为“平方数” 比如,25,64 虽然无 ...

  3. Mavlink地面站编写之二--Mission Planner编译

    软件下载:        本文使用VS2013进行编译和改动Mission Planner,其它版本号没有尝试过. 首先下载Mission Planner源码. https://github.com/ ...

  4. mysql 备份还原

    1.文件备份 2.dump mysqldump -h 192.168.102.73 -uroot -p123456 edc >/webapp/edcapp/edc.sql       mysql ...

  5. Java AtomicBoolean (Java代码实战-008)

    值得一提的是,Java的AtomXXX类并不是使用了锁的方式进行同步,而是采用了一种新的理念,叫做CAS(Compare And Swap)CAS是一组CPU原语指令,用来实现多线程下的变量同步(原子 ...

  6. 〖Linux〗Kubuntu设置打开应用时就只在打开时的工作区显示

    有没有遇到一种情况: 在工作区1打开了应用程序Google Chrome: 这个时间感觉它打开速度比较慢,就快捷键切换到工作区2了: 结果这个时候,Google Chrome就直接在工作区2打开,多不 ...

  7. RRT路径规划算法

    传统的路径规划算法有人工势场法.模糊规则法.遗传算法.神经网络.模拟退火算法.蚁群优化算法等.但这些方法都需要在一个确定的空间内对障碍物进行建模,计算复杂度与机器人自由度呈指数关系,不适合解决多自由度 ...

  8. V-rep学习笔记:外部函数调用方式

    The remote API functions are interacting with V-REP via socket communication in a way that reduces l ...

  9. excel单元格对齐方式

    需要注意下面几点: 1.强制换行,ctrl+回车 2.快速设置缩进,当我们选择需要调整缩进的单元格之后,点击格式---单元格格式---选择水平对齐方式之后,可以选择缩进. 3.注意跨行居中功能,尤其是 ...

  10. Inno Setup入门(十)——操作注册表

    有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...