SQL substring截取字符串截取

&>&SQL Server 字符串截取功能创建(Split)
SQL Server 字符串截取功能创建(Split)
上传大小:1KB
SQLServer数据库中创建字符串截取功能(Split),调用方法:
Split(string,str)
综合评分:0
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有0条
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
SQL Server 字符串截取功能创建(Split)
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
SQL Server 字符串截取功能创建(Split)首先建一张测试表:
create table teststring(name nvarchar(100));
insert into teststring
('张三,李四,王五,马六,萧十一,皇宫');
1.判断字符串中某字符(字符串)出现的次数,第一次出现的位置最后一次出现的位置:
查看’,’出现的次数
select LEN(name)-LEN(REPLACE(name,',','')) from
查看’,’第一次出现的位置:
select CHARINDEX(',',name) from
查看’,’最后一次出现的位置:
select len(name)-(CHARINDEX(',',REVERSE(name))-1) from
2.取出以’,’分隔开的字符(串),这个例子中就是’张三’、’李四’等
这是有规律的,首先应该想到有没有特定的系统函数实现,好像没有,其次就应该想到循环了。
当我把’张三’取出后,怎样把’张三,’去掉呢?
取’张三’不难,
select SUBSTRING(name,1,CHARINDEX(',',name)-1) from
如何把’张三,’去掉呢?开始我也不知道,baidu、google啊,关键字sql、split吧,总之我也是搜的
select STUFF(name,1,CHARINDEX(',',name),'') from
好像用replace也能实现
select REPLACE(name,substring(name,1,CHARINDEX(',',name)),'') from
那现在就差循环了,我很少写存储过程或函数的,语法都不记得,用的时候现查(经常用就记得了),我都写匿名的存储过程,哈哈
create table teststring2(name nvarchar(100));
declare @name nvarchar(100);
select @name= name from
while(CHARINDEX(',',@name)&&0)
insert into teststring2 select SUBSTRING(@name,1,CHARINDEX(',',@name)-1);
set @name=STUFF(@name,1,CHARINDEX(',',@name),'');
set @i=@i+1;
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
阅读(...) 评论()首先学习两个函数1.substring& 返回字符、binary、text 或 image 表达式的一部分。&&&&&&基本语法:SUBSTRING ( expression , start , length )&&&&&&&expression:字符串、二进制字符串、text、image、列或包含列的表达式&&&&&&start:整数,指定子串的开始位置&&&&&&注:SQL中"1"表示字符串中的第一个字符,而.NET中"0"表示第一个字符&&&&&&length:整数,指定子串的长度(要返回的字符数或字节数)&2.patindex&&返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。&&&&&&基本语法:PATINDEX ( '%pattern%' , expression )&&&&&&&pattern:字符串。可以使用通配符,但 pattern 之前和之后必须有 % 字符(搜索第一个和最后一个字符时除外)。pattern 是短字符数据类型类别的表达式&&&&&&expression:表达式,通常为要在其中搜索指定模式的列,expression 为字符串数据类型类别
下面结合上面的两个函数,截取字符串中指定的字符
declare&@a&varchar(<span style="font-weight: color: #)set&@a='<span style="color: #ff年7月15日星期五'select&substring(@a,<span style="font-weight: color: #,<span style="font-weight: color: #)&--获取年份2009declare&@b&intset&@b=patindex('%日%',@a)&--获取'日'这个字符在字符串中的位置,即10select&substring(@a,<span style="font-weight: color: #,@b-<span style="font-weight: color: #)&--获取日期'7月15日'
阅读(...) 评论()--1、LEFT()方法---
--函数说明---
--1)语法:LEFT(character,integer)
--2)介绍:参数1:要截取的字符串,参数2:截取字符个数
--3)使用:
--返回从字符串左边开始指定个数的字符--
select LEFT('SqlServer_2008',3)
--4)返回:Sql
--1、RIGHT()方法---
-- right()函数说明---
--1)语法:RIGHT(character,integer)
--2)介绍:参数1:要截取的字符串,参数2:截取字符个数
--3)使用:
--返回从字符串右边开始指定个数的字符--
select LEFT('SqlServer_2008',4)
--4)返回:2008
--1、SUBSTRING()方法---
-- substring()函数说明---
--1)语法:SUBSTRING(character,start,length)
--2)介绍:参数1:要截取的字符串,参数2:开始截取的下标,参数3:截取的字符长度
--3)使用:
--返回从字符串中间的字符--
select SUBSTRING('SqlServer_)--可结合charindex()函数使用select substring(字段名称,charindex('-',字段名称)+1,len(字段名称)-charindex('-',字段名称))charindex('要查找的子字符串','父字符串'[,开始查找的位置,默认为0])
--4)返回:Server
阅读(...) 评论()为了账号安全,请及时绑定邮箱和手机
点击这里,将文章分享到自己的动态
截取字符串中最后一个中文词语(MS SQL)
有朋友需求一个问题,就是处理一张表中某一字段,从这个字段中去截取内容中最后一个中文词语。ID SourceText Result1 张达:U:1杨英苹:U:1,周忱:U:1,;苗桥:U:1,章玮:U:1,; 2 gaoying,高颖:U; 3 gaoying,高颖:U; 4 mq,苗桥;dingjian,丁健:U;zhangwei,章玮;zc,周忱; 5 xwj,向文杰; 6 dingjian,丁健; 7
8 gy,郭颖; 9 houwenjun,侯文君;lj,李军;sunle,孙乐; 10 dingjian,丁健:U; 11 dingjian,丁健:U;zhangwei,章玮; 12 wwm,王文明;zkl,张康亮;jiangyuan,蒋远;fyj,范云军; 13 dingjian,丁健; 14 fyj,范云军;wwm,王文明;zkl,张康亮; 15 lww,陆维巍; Source Code&创建一个张来存储上面的数据:SET&ANSI_NULLS&ONGOSET&QUOTED_IDENTIFIER&ONGOCREATE&TABLE&[dbo].[DataSource](&&&&[ID]&[int]&IDENTITY(1,1)&NOT&NULL,&&&&[SourceText]&[nvarchar](100)&NULL,&--原始值&&&&[Result]&[nvarchar](100)&NULL&--处理结果)&ON&[PRIMARY]GOSource Code&另外,你还要创建另外一张表,用来存储所有字符串中,分隔符号:SET&ANSI_NULLS&ONGOSET&QUOTED_IDENTIFIER&ONGOCREATE&TABLE&[dbo].[Punctuation](&&&&[ID]&[int]&IDENTITY(1,1)&NOT&NULL,&&&&[Name]&[nvarchar](2)&NULL)&ON&[PRIMARY]GOSource Code&把所有分隔的标点符号,添加入此表中:&&处理数据,我们需要分好次来进行,先去除字母和数字:&得到的结果:&接下来,我们去除字符串的标点字符:&这一步,运行的结果如下:&越来越接近我们需求的结果了:此时,我需要对处理的结果,再次处理,得需要了解下面二个函数:《使用XQuery的nodes()方法实现字符拆分》http://www.cnblogs.com/insus/archive//2368283.html或《MS SQL Server字符拆分函数》http://www.cnblogs.com/insus/p/3163564.html其实二个函数,最终处理结果是一样的。就是分割字符串,然后放在一张表中回到刚才的代码中,我们只管添加一行代码即可实现了我们的要求:&&&&DECLARE&@r&INT&=&1,@rs&INT&=&0&&&&SELECT&@rs&=&MAX([ID])&FROM&[dbo].[DataSource]&&&&WHILE&@r&&=&@rs&&&&&BEGIN&&&&&&&&DECLARE&@Text&NVARCHAR(100)&&&&&&&&SELECT&@Text&=&[SourceText]&FROM&[dbo].[DataSource]&WHERE&[ID]&=&@r&&&&&&&&&WHILE&PATINDEX(&#39;%[A-Za-z0-9]%&#39;,@Text)&&&0&&&&&&&&&&&&&&&&&SET&@Text&=&STUFF(@Text,PATINDEX(&#39;%[A-Za-z0-9]%&#39;,@Text),1,&#39;&&#39;)&&&&&&&&&&&&&&&&&&&&&&&&&&DECLARE&@x&INT&=&1,@xs&INT&=&0&&&&&&&&SELECT&@xs&=&MAX([ID])&FROM&[dbo].[Punctuation]&&&&&&&&WHILE&@x&&=&@xs&&&&&&&&BEGIN&&&&&&&&&&&&DECLARE&@p&NVARCHAR(2)&&&&&&&&&&&&&SELECT&@p&=&[Name]&&FROM&[dbo].[Punctuation]&WHERE&[ID]&=&@x&&&&&&&&&&&&&&&&SET&@Text&=&RTRIM(LTRIM(REPLACE(@Text,@p,&#39;&&#39;)))&&&&&&&&&&&&&&&&&&&&&&&&&&&&SET&@x&=&@x&+&1&&&&&&&&END&&&&&&&&SELECT&TOP&1&@Text&=&[WORD]&FROM&[dbo].[udf_Split](@Text,&#39;&&#39;)&WHERE&LEN(ISNULL([WORD],&#39;&#39;))&&0&&ORDER&BY&[ID]&DESC&&&&&&&&UPDATE&&[dbo].[DataSource]&SET&[Result]&=&@Text&&WHERE&&[ID]&=&@r&&&&&&&&SET&@r&=&@r&+&1&&&&ENDGOSource Code&结果如下:&OK,这就是实现的全部过程。但是,我们应该不满足上面的代码。既然都使用正则来去除字母,数字,那标点符号可以使用正则来去除对吧。所以说,我们不必再创建一个表来存储标点符号了。DECLARE&@r&INT&=&1,@rs&INT&=&0&&&&SELECT&@rs&=&MAX([ID])&FROM&[dbo].[DataSource]&&&&WHILE&@r&&=&@rs&&&&&BEGIN&&&&&&&&DECLARE&@Text&NVARCHAR(100)&&&&&&&&SELECT&@Text&=&[SourceText]&FROM&[dbo].[DataSource]&WHERE&[ID]&=&@r&&&&&&&&&&&&&&&&WHILE&PATINDEX(&#39;%[A-Za-z0-9:,;]%&#39;,@Text)&&&0&&&&&&&&&&&&&&&&&SET&@Text&=&STUFF(@Text,PATINDEX(&#39;%[A-Za-z0-9:,;]%&#39;,@Text),1,&#39;&&#39;)&&&&&&&&SET&@Text&=&LTRIM(RTRIM(@Text))&&&&&&&&SELECT&TOP&1&@Text&=&[WORD]&FROM&[dbo].[udf_Split](@Text,&#39;&&#39;)&WHERE&LEN(ISNULL([WORD],&#39;&#39;))&&0&&ORDER&BY&[ID]&DESC&&&&&&&&UPDATE&&[dbo].[DataSource]&SET&[Result]&=&@Text&&WHERE&&[ID]&=&@r&&&&&&&&SET&@r&=&@r&+&1&&&&ENDSource Code&最终的结果一样,代码很了不少!!!&
若觉得本文不错,就分享一下吧!
评论加载中...
相关文章推荐
正在加载中
作者相关文章

我要回帖

更多关于 SQL存储过程截取字符串 的文章

 

随机推荐