成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自己動手豐衣足食,DIY SQL字符串分解函數(shù)Split

數(shù)據(jù)庫
C#中和JavaScript中都有相應(yīng)的分離字符串的Split函數(shù),就想當(dāng)然的以為SQL中也會有類似的函數(shù),結(jié)果查了半天的MSSQL幫助文檔,也沒找到。沒辦法,只好自己寫了

前段時間,在做一個可以批量審核或刪除數(shù)據(jù)的功能時,遇到這么個問題:

因為審核或刪除操作是在存儲過程進(jìn)行的,所以,就打算將選中的數(shù)據(jù)的主鍵拼成字符串,傳到存儲過程進(jìn)行分離,再繼續(xù)處理。

C#中和JavaScript中都有相應(yīng)的分離字符串的Split函數(shù),就想當(dāng)然的以為SQL中也會有類似的函數(shù),結(jié)果查了半天的MSSQL幫助文檔,也沒找到。沒辦法,只好自己寫了,在網(wǎng)上搜了下相關(guān)的,看了一兩篇關(guān)于SQL分離字符串的自定義函數(shù)的文章,結(jié)果,有點(diǎn)失望,可能是自己水平差,或者是因為人家的代碼沒寫注釋吧,總之就是看著挺吃力的,還沒看完就決定自己寫了。。。

思路很簡單:在需要分解的字符串中,如果存在指定的分隔符,則將***個分隔符前面的字符串取出,存入表內(nèi),然后在需要分解的字符串中將已取出的字符串及***個分隔符刪除,然后繼續(xù)下一次分解(如果還存在指定的分隔符,就分解)

以下是SQL:

  1. -- ============================================= 
  2.  -- Author:        Henson 
  3.  -- Create date:   2011-04-20 
  4.  -- Description:   字符串分離函數(shù) 
  5.  -- ============================================= 
  6.  ALTER FUNCTION [dbo].[Split]  
  7.  ( 
  8.      @strText varchar(3000),--待分離的原字符串 
  9.      @strSplit varchar(100)--分隔符 
  10.  ) 
  11.  RETURNS @temp Table 
  12.  ( 
  13.      ID int IDENTITY PRIMARY KEY
  14.      SingleVal varchar(1000) 
  15.  ) 
  16.  AS 
  17.  BEGIN 
  18.      Declare @intLen int --用來存儲待分離原字符串長度 
  19.      Declare @intSplitLen int --分隔符長度 
  20.      Declare @intIndex int --用來存儲分離字符串在原字符串的位置 
  21.      Declare @strVal varchar(1000)--用來存儲分離出來后的字符串 
  22.      --獲取原字符串的長度 
  23.      Set @intLen = LEN(RTRIM(LTRIM(@strText))) 
  24.      Set @intSplitLen = LEN(RTRIM(LTRIM(@strSplit))) 
  25.      --原字符串不為空,才繼續(xù)分離 
  26.      If(@intLen > 0) 
  27.      Begin 
  28.          --循環(huán)原字符串,直至原字符串被分離完畢 
  29.          While CHARINDEX(@strSplit,@strText)>0 
  30.          Begin 
  31.              --獲取分離字符串在原字符串的位置 
  32.              Set @intIndex = CHARINDEX(@strSplit,@strText) 
  33.              --獲取分離出的字符串,并插入表中 
  34.              Set @strVal = RTRIM(LTRIM(LEFT(@strText,@intIndex-1))) 
  35.              if(LEN(@strVal)>0) 
  36.              Begin 
  37.                  Insert Into @temp (SingleVal) values(@strVal) 
  38.              End 
  39.              --分離后,將分離出的字符串(包括分隔符)從原字符串中刪除 
  40.              Set @strText = Substring(@strText,@intIndex+@intSplitLen,@intLen-@intIndex) 
  41.              --重新設(shè)置原字符串的長度 
  42.              Set @intLen = LEN(@strText) 
  43.          End 
  44.          --如果分離后的原字符串依然不為空,則也應(yīng)該插入表中 
  45.          if(LEN(RTRIM(LTRIM(@strText)))>0) 
  46.          Begin 
  47.              Insert Into @temp (SingleVal) values(@strText) 
  48.          End 
  49.      End 
  50.      return 
  51.  END 

(分隔符允許是多位的)

按一般的習(xí)慣來說,在組織多個字符串時,一般都是這種寫法:strKeys += strSingleKey + ",";

所以可能最終該字符串可能會以逗號結(jié)尾,如果組織完成后,將結(jié)尾的逗號去掉了,那就不會以逗號結(jié)尾,所以,在循環(huán)分解完成后,如果剩下的原字符串中(去除左右空格后),如果還有內(nèi)容 ,則也應(yīng)該存入表中。  

可能我這種寫法不是***的,也可能會有問題,如確實(shí)有需要改進(jìn)的,還請指出,不勝感激!!!

原文鏈接:http://www.cnblogs.com/uphenson/archive/2011/07/18/2109452.html

【編輯推薦】

  1. SQL Server如何動態(tài)生成分區(qū)腳本
  2. 手把手教你建立SQL數(shù)據(jù)庫的表分區(qū)
  3. 說說抽象SQL(參數(shù)化)的查詢
  4. 淺述遠(yuǎn)程Service Broker的實(shí)現(xiàn)
責(zé)任編輯:艾婧 來源: 博客園
相關(guān)推薦

2022-08-29 14:22:03

bpmn.jsVue流程

2010-11-08 17:07:41

SQL Server字

2010-09-09 11:48:00

SQL函數(shù)字符串

2010-09-06 17:30:46

SQL函數(shù)

2021-03-14 15:07:55

SQLServer數(shù)據(jù)庫字符串

2011-07-12 13:01:33

2010-09-13 14:55:09

sql server字

2025-03-03 10:51:29

SQL數(shù)據(jù)庫MySQL

2020-09-29 12:13:46

SQL引擎底層

2014-01-02 16:14:10

PostgreSQL字符串

2009-11-27 09:05:50

PHP函數(shù)split(

2010-10-21 15:26:35

SQL Server字

2010-10-09 11:54:46

MySQL字符串

2010-06-04 14:24:12

Linux 查看網(wǎng)絡(luò)流

2010-06-13 15:08:05

Linux 查看網(wǎng)絡(luò)流

2010-04-09 18:15:47

Oracle 字符串

2010-05-13 09:50:56

Google服務(wù)器公共云供應(yīng)商

2010-09-06 17:26:54

SQL函數(shù)

2009-08-06 16:01:09

C#字符串函數(shù)大全

2010-07-14 16:35:52

Perl字符串處理函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品国产欧美一区二区 | 一区二区三区高清 | 色资源在线观看 | 九七午夜剧场福利写真 | 日韩网站在线观看 | 国产成人精品一区二区三区网站观看 | 亚洲精品久久久久久一区二区 | 九九热免费视频在线观看 | 久久久久久久一区 | 成人在线免费网站 | 国产1区| 久久9热| 日韩精品在线免费观看 | 日日天天 | 国产精品久久久久久高潮 | 国产一区二区三区四区在线观看 | 中文字幕一区二区三区精彩视频 | 日韩成人影院在线观看 | 亚洲精品影院 | 在线一区 | 免费的av网站 | 操网站 | 日韩精品成人免费观看视频 | 中文字幕高清在线 | 综合精品在线 | 久久99这里只有精品 | 最新超碰| 久久久青草婷婷精品综合日韩 | 91美女在线 | 成人午夜精品 | 自拍第1页 | 97伦理影院 | 狠狠狠干 | 久久精品色欧美aⅴ一区二区 | www.操.com | 国产91在线 | 亚洲 | 成人免费av在线 | 91看片网址 | 四虎在线视频 | 欧美日韩电影一区二区 | 中文字幕在线不卡 |