1. 程式人生 > >sql函式版Split(字串擷取)

sql函式版Split(字串擷取)

 
Create FUNCTION [dbo].[split](@Long_str varchar(8000),@split_str varchar(100))    
RETURNS  @tmp TABLE(        
    ID int IDENTITY PRIMARY KEY,      
    short_str varchar(8000)    
)    
AS   
BEGIN   
    DECLARE @long_str_Tmp varchar(8000),
   @short_str varchar(8000),
   @split_str_length int   
 
    SET @split_str_length = LEN(@split_str)    
 
    IF CHARINDEX(@split_str,@Long_str)=1 
         SET @long_str_Tmp=SUBSTRING(@Long_str,
     @split_str_length+1,
     LEN(@Long_str)
[email protected]
_str_length) ELSE SET @[email protected]_str IF CHARINDEX(REVERSE(@split_str),REVERSE(@long_str_Tmp))>1 SET @[email protected][email protected]_str ELSE SET @[email protected]_str_Tmp WHILE CHARINDEX(@split_str,@long_str_Tmp)>0 BEGIN SET @short_str=SUBSTRING(@long_str_Tmp,1, CHARINDEX(@split_str,@long_str_Tmp)-1) DECLARE @long_str_Tmp_LEN INT,@split_str_Position_END int SET @long_str_Tmp_LEN = LEN(@long_str_Tmp) SET @split_str_Position_END = LEN(@short_str)
[email protected]
_str_length SET @long_str_Tmp=REVERSE(SUBSTRING(REVERSE(@long_str_Tmp),1, @[email protected]_str_Position_END)) IF @short_str<>'' INSERT INTO @tmp SELECT @short_str END RETURN END


--支援分割符多位元組

--使用方法 --select * from dbo.split('abc-def-ghi-jkl','-')

--select * from dbo.split('abc----def----ghi----jkl','----')

轉自:http://9bugaosu1.blog.163.com/blog/static/6272222520107214106342/

相關推薦

sql函式Split(字串擷取)

 Create FUNCTION [dbo].[split](@Long_str varchar(8000),@split_str varchar(100)) RETURNS @tmp TABLE( ID int IDENTITY PRIM

MySQL字串函式substring:字串擷取

MySQL 字串擷取函式:left(), right(), substring(), substring_index()。還有 mid(), substr()。其中,mid(), substr() 等價於 substring() 函式,substring() 的功能非常強大

SQL Server自定義字串分割函式——Split

我相信大部分人都碰到過,處理資料的時候,欄位的值是以 ',' (逗號)分隔的形式,所以我也不能避免。 然後我才知道,sql 是沒有類似於 C# 和 Javascript 這種分割字串的方法。( Split ) 所以我自己定義了一個 sql 函式(多宣告表值函式),程式碼如下:

SQL裡類似SPLIT的分割字串函式

-SQL對字串的處理能力比較弱,比如我要迴圈遍歷象1,2,3,4,5這樣的字串,如果用陣列的話,遍歷很簡單,但是T-SQL不支援陣列,所以處理下來比較麻煩。下邊的函式,實現了象陣列一樣去處理字串。一,用臨時表作為陣列create   function   f_split(@c

ive函式 -- split 字串分割函式

hive字串分割函式 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 seconds, Fetched: 1 row(s) 返回值為一個數組 a.基本用法: 例1: spl

常用SQL函式字串分隔轉表、自增長轉編號)

字串分隔轉表 -- ============================================= -- Author: -- Create date: -- Description: 分割字串 -- =====================================

Delphi 字串擷取函式

如果要使用LeftStr,RightStr,MidStr必需引用系統單元StrUtils; 宣告變數Str:string; Str:=HelloWorld; 1,LeftStr(Str,2)=He;//從Str字串變數的最左邊(第一個字元包括第一個字元)開始擷取2個字元; 2,RightStr(Str

字串擷取函式substr()

substr(引數1,引數2[,引數3]); 該系統函式返回被截後的子字串,它接受2個必選引數,引數1為要擷取的字串,引數2為擷取的開始位置,引數3可選,表示擷取長度。 例子:substr(“abcdef”,1);//返回"bcdef",從索引1處開始擷取,如果沒有指定擷取長度,

excel oracle 字串擷取函式

excel left(text,num_chars),從左側開始擷取部分字串 right(text,num_chars),從右側開始擷取部分字串 其中:text表示要擷取的字串,num_chars表示要擷取的字元數 mid(text,start_num,num_chars),中間某位置開始擷取部分字串

sql 分隔(split字串轉行

     一對多關係寫成一行資料,強行埋坑,下面是我的解決辦法,在效率方面這樣肯定不如好好構建資料關係,正常去做的快,如果可以我建議你去重構資料表結構 : )  1.mysql 首先建立一個儲存過程,可以將分隔的資料行插入到一個臨時表中 CREATE DEFINER=`

PHP中常用的字串擷取函式

1.substr(源字串,起始位置[,長度])-擷取字串返回部分字串 <?php $str ="phpddt.com"; echo substr($str,2);//pddt.com echo substr($str,2,3);//pdd

oracle單行函式(大小寫轉換,字串替換,字串擷取...)

Oracle單行函式分為以下幾種: 字串函式有UPPER( )     LOWER( )   INITCAP( )     REPLACE(  )     LENGT

SQL Server對比兩字串的相似度(函式演算法)

ALTER FUNCTION FNStrCompare (@Val1 VARCHAR(50),---比較字串1 @Val2 VARCHAR(50),---比較字串2 @Break VARCHAR(10) ---分隔符 ) RETURNS INT AS BEGIN DECLARE @

PHP技術分享--實現中文字串擷取無亂碼的函式(適用於utf-8)

$re['utf-8']  = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";

Oracle函式,按分隔符擷取字串 [問題點數

今天因工作需要,寫了一個小函式,按分隔符擷取字串的,分享出來,希望有需要的朋友能用到。功能例項:  substrbysep('aaa,bb,ccccc,ddd,vvv',',',3)返回結果 'ccccc'.函式:create or replace function sub

c語言的split字串分割函式strtok的使用

c語言也有類似其他語言的split字串分割函式,就是strtok 標頭檔案:#include <string.h>定義函式:char * strtok(char *s, const char *delim);函式說明:strtok()用來將字串分割成一個個片段。

字串擷取 JS字串擷取函式slice(),substring(),substr()的區別

JS字串擷取函式slice(),substring(),substr()的區別 在JS中,slice()、substring()、substr()都有擷取字串的作用,那他們有哪些用法上的區別呢?如果你也有疑惑,這篇文章或許能夠幫助到你。 一、substring() substrin

SQL函式charindex用於匹配用逗號分隔的字串

SQL中沒有類似VB中的Split的函式。此時,如要匹配 ,6,3,9,22,中的6。可用charindex函式巧妙實現: charindex( ',' +cast(6 as varchar)+ ',',‘,6,3,9,22,’)>0 SELECT distinct PO_Pomain.POID,PO

C語言實現的字串擷取函式

如題,實現的就是字串擷取函式,傳入字串以及要擷取的位置,返回擷取後的字串,函式如下,測試可用。 char *cutwords(char *page,int start,int end){ ch

Pl/SQL中的SPLIT函式

createorreplace type type_split astableofvarchar2(50);  --建立一個  type  ,如果為了使split函式具有通用性,請將其size 設大些。--建立functioncreateorreplacefunction split(   p_list va