偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

因?yàn)閷徍嘶騽h除操作是在存儲(chǔ)過(guò)程進(jìn)行的,所以,就打算將選中的數(shù)據(jù)的主鍵拼成字符串,傳到存儲(chǔ)過(guò)程進(jìn)行分離,再繼續(xù)處理。

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

思路很簡(jiǎn)單:在需要分解的字符串中,如果存在指定的分隔符,則將***個(gè)分隔符前面的字符串取出,存入表內(nèi),然后在需要分解的字符串中將已取出的字符串及***個(gè)分隔符刪除,然后繼續(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 --用來(lái)存儲(chǔ)待分離原字符串長(zhǎng)度 
  19.      Declare @intSplitLen int --分隔符長(zhǎng)度 
  20.      Declare @intIndex int --用來(lái)存儲(chǔ)分離字符串在原字符串的位置 
  21.      Declare @strVal varchar(1000)--用來(lái)存儲(chǔ)分離出來(lái)后的字符串 
  22.      --獲取原字符串的長(zhǎng)度 
  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è)置原字符串的長(zhǎng)度 
  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í)慣來(lái)說(shuō),在組織多個(gè)字符串時(shí),一般都是這種寫法:strKeys += strSingleKey + ",";

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

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

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

【編輯推薦】

  1. SQL Server如何動(dòng)態(tài)生成分區(qū)腳本
  2. 手把手教你建立SQL數(shù)據(jù)庫(kù)的表分區(qū)
  3. 說(shuō)說(shuō)抽象SQL(參數(shù)化)的查詢
  4. 淺述遠(yuǎn)程Service Broker的實(shí)現(xiàn)
責(zé)任編輯:艾婧 來(lái)源: 博客園
相關(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ù)庫(kù)字符串

2011-07-12 13:01:33

2010-09-13 14:55:09

sql server字

2025-03-03 10:51:29

SQL數(shù)據(jù)庫(kù)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ù)棧公眾號(hào)