首先建一张测试表:

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. 一致性哈希算法——PHP实现代码

    <?php /** * Flexihash - A simple consistent hashing implementation for PHP. * * The MIT License * ...

  2. cocos2d-js 入门 (主要是HTML5)

    cocos2d-js是cocos2d-x的JavaScript版本,真正跨全平台的游戏引擎,采用原生JavaScript语言,可发布到包括Web平台,iOS,Android,Windows Phone ...

  3. 令Django 视图有默认 login_required

    方法一 from django.template import RequestContext from django.shortcuts import render_to_response from ...

  4. 〖Linux〗Linux的smb地址转换Windows格式(两者互转)

    因为个人常用办公PC是Linux,打开文件共享什么的是 smb:// 的,而不是Windows的 \\ 需要复制文件路径给别人的时候,发smb://给一个使用Windows办公的用户不算很得体的方法 ...

  5. Xamarin.Android之SQLite.NET ORM

    一.前言 通过<Xamarin.Android之SQLiteOpenHelper>和<Xamarin.Android之ContentProvider>的学习,我们已经掌握了如何 ...

  6. springMVC自定义方法属性解析器

    使用场景例子: 用户登陆系统一般会往Session里放置一个VO对象,然后在controller里会来获取用户的userId等信息. 之前的写法是:@SessionAttributes配合@Model ...

  7. MYSQL数据库注释

    //修改注释 alter table user comment = '我要修改注释'; //新建表设定表注释及解释说明. create table AuthUser( ID ) primary key ...

  8. TL Cop

    第一讲 研发技术型人才的特点 一.为何要重视技术与研发技术管理 1.中国技术型企业近十年的发展路线图以及经验教训 2.技术还是营销:中国企业的痛 3.名家论技术与研发技术管理 二.研发技术人才的特点 ...

  9. 【CAS单点登录视频教程】 第02集 -- 安装CAS

    目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthenticati ...

  10. Ubuntu中root用户和user用户的相互切换[转载自93度的饼干]

    Ubuntu中root用户和user用户的相互切换 Ubuntu是最近很流行的一款Linux系统,因为Ubuntu默认是不启动root用户,现在介绍如何进入root的方法. (1)从user用户切换到 ...