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

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

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

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

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

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

思路很簡單:在需要分解的字符串中,如果存在指定的分隔符,則將***個分隔符前面的字符串取出,存入表內(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)該存入表中。  

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

原文鏈接: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的實現(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ù)

2010-09-13 14:55:09

sql server字

2025-03-03 10:51:29

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

2011-07-12 13:01:33

2021-03-14 15:07:55

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

2014-01-02 16:14:10

PostgreSQL字符串

2020-09-29 12:13:46

SQL引擎底層

2010-06-04 14:24:12

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

2010-06-13 15:08:05

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

2010-09-06 17:26:54

SQL函數(shù)

2009-11-27 09:05:50

PHP函數(shù)split(

2010-05-13 09:50:56

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

2010-10-09 11:54:46

MySQL字符串

2010-10-21 15:26:35

SQL Server字

2010-04-09 18:15:47

Oracle 字符串

2009-11-24 09:55:44

PHP字符串函數(shù)

2013-08-02 09:42:37

BYODBYOC云存儲
點贊
收藏

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

主站蜘蛛池模板: 99热在线播放 | 亚洲免费观看视频网站 | 高清视频一区二区三区 | 欧美乱做爰xxxⅹ久久久 | 性色的免费视频 | 国产精品一区二区欧美黑人喷潮水 | 日韩精品视频在线 | 久久成人国产 | 欧美日韩电影一区二区 | 久久久久国产一区二区三区四区 | 天天影视网天天综合色在线播放 | 天天操天天插 | 色婷婷综合网站 | 丝袜 亚洲 另类 欧美 综合 | 正在播放国产精品 | av官网在线 | 午夜爽爽爽男女免费观看影院 | 国产高清视频一区 | 色爽女| 在线观看免费av片 | 在线免费观看视频你懂的 | 嫩草视频在线免费观看 | 中文字幕国产一区 | 夜夜骑首页 | 欧美精品在线一区二区三区 | 一二三区视频 | 九九色综合 | 国产日韩欧美 | 欧美一级片在线看 | 精品一区二区三区不卡 | 亚洲精品2| 欧美一区二区三区在线观看 | 日本啊v在线 | 伊人激情网 | 中文精品视频 | 久久久久久91香蕉国产 | 中文字幕乱码亚洲精品一区 | 精品国产一级 | 国产欧美日韩精品一区 | 青青久久av北条麻妃海外网 | 成人黄色av |