1. 程式人生 > >SQL字串轉換為陣列

SQL字串轉換為陣列

思路:
按指定符號分割字串,返回分割後的元素個數,方法很簡單,就是看字串中存在多少個分隔符號,然後再加一,就是要求的結果。

——返回字串陣列長度函式

create function Get_StrArrayLength
(
  @str varchar(5000),  --要分割的字串
  @split varchar(10)  --分隔符號
)
returns int
as
begin
  declare @location int
  declare @start int
  declare @length int

  set @str=ltrim(rtrim(@str))
  set @location
=charindex(@split,@str) set @length=1 while @location<>0 begin set @start=@location+1 set @location=charindex(@split,@str,@start) set @length=@length+1 end return @length end

——按指定符號分割字串,返回分割後指定索引的第幾個元素

create function Get_StrArrayStrOfIndex
(
  @str varchar(5000),  --要分割的字串
  @split
varchar(10), --分隔符號 @index int --取第幾個元素 ) returns varchar(5000) as begin declare @location int declare @start int declare @next int declare @seed int set @str=ltrim(rtrim(@str)) set @start=1 set @next=1 set @seed=len(@split) set @location=charindex(@split,@str) while @location<>0
and @index>@next begin set @start=@location+@seed set @location=charindex(@split,@str,@start) set @next=@next+1 end if @location =0 select @location =len(@str)+1 return substring(@str,@start,@location-@start) end

——呼叫示例

--==================================
declare @str varchar(5000)
set @str='1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48'
print dbo.Get_StrArrayLength(@str,',')
declare @next int 
declare @s varchar(100) 
set @next=1
while @next<=dbo.Get_StrArrayLength(@str,',')
begin
  print dbo.Get_StrArrayStrOfIndex(@str,',',@next) ----輸出陣列中的值
  set @next[email protected]next+1
end
--==================================

——檢查一個元素是否在陣列中

Create function CheckStrInArr(@s as varchar(50),@sArr as varchar(5000)) returns int
as 
begin
declare @str varchar(5000)
set @[email protected]
declare @next int  
declare @ret int
set @ret=0
set @next=1
while @next<=dbo.Get_StrArrayLength(@str,',')
begin
   if dbo.Get_StrArrayStrOfIndex(@str,',',@next)[email protected] 
  begin
  set @ret=1;
  end
   set @next[email protected]next+1
end
return @ret
end

-- =========呼叫示例========
declare @a int
set @a=dbo.CheckStrInArr('8','2,3,5,8')
select @a
-- =========呼叫示例========

——檢查一個元素是否與陣列中的相匹配

--select dbo.CheckStrLikeInArr(2,'d','sde,df,aad,d,fgsa,fgd')
Create function CheckStrLikeInArr
(
@liketype int=0,                      --like型別(0為為@keyword%,2為) 一般只用0
@keyword as varchar(50),      --要檢查的關鍵字
@sArr as varchar(5000)        --陣列
) 
returns nvarchar(max)
as 
begin
declare @str varchar(5000)
   set @str=@sArr
declare @start int 
declare @result nvarchar(max)
   set @result=''
   set @start=1
declare @temp nvarchar(20);
while @start<=dbo.Get_StrArrayLength(@str,',')
begin
   if @liketype=0
    begin
     set @temp=dbo.Get_StrArrayStrOfIndex(@str,',',@start);
       if @temp like '%'+ @keyword+'%'
       begin
        set @result=@result+ @temp +',';
       end
      set @start=@start+1
    end
   else if @liketype=1
    begin

      if dbo.Get_StrArrayStrOfIndex(@str,',',@start) like ''+ @keyword +'%'
       begin
          set @result=dbo.Get_StrArrayStrOfIndex(@str, ',' , @start)+',';
       end
      set @start=@start+1
     end
   else if @liketype=2
    begin

                    if dbo.Get_StrArrayStrOfIndex( @str, ',' , @start) like '%'+ @keyword+''
       begin
           set @result=dbo.Get_StrArrayStrOfIndex(@str, ',' , @start)+',';
       end
      set @start=@start+1
    end
end
return @result
--    return cast(dbo.Get_StrArrayLength(@result,',')as nvarchar(2000)) 
end

相關推薦

SQL字串轉換陣列

思路: 按指定符號分割字串,返回分割後的元素個數,方法很簡單,就是看字串中存在多少個分隔符號,然後再加一,就是要求的結果。 ——返回字串陣列長度函式 create function Get_S

php使用json_encode()無法將json字串轉換陣列.轉換的結果的null

要是使用json_decode()  字串的格式要如下: [ { "a": "hello", "b" : "world" } ]; 如果使用json_decode得到是null ,那麼很可能是 鍵名 沒有加引號 導致 ,要想上面的例子 鍵名a 有加引號這樣才能成功 的轉

ORACLE 中字串轉換陣列的函式方法

CREATE OR REPLACE TYPE splitArray AS TABLE OF VARCHAR2(2048); --------字串拆分函式 CREATE OR REPLACE FUNCTION fu_split_Array (      str IN VARCHAR2,--輸入的字串    

字串轉換陣列

package com.yanshu.utils; import java.net.URLDecoder; /**  * 對tab選項欄位進行分割,處理  * @author Administrator  *  */ public class TabUtils {/***

字串轉換陣列 split()

1、split("")與split(" ")的區別: window.onload=function(){ var arr="abc"; console

PHP用一句程式碼把字串轉換陣列的方式

如果你是想把url裡的引數解析到陣列可以直接用 parse_str  不用這麼複雜  用內建函式即可  建議好好看看文件 1 2 3 4 5 6 7 8 9 10 parse_str('id=123&title=標題&typ

字串"a,b,c"以逗號分隔轉換陣列並列印

主要利用了String的split方法。 package com.dylan.test; /** * @author xusucheng * @create 2017-12-22 **/ public class Test { public static void

JSON陣列形式字串轉換List<Map<String,String>>的8種方法

package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;

Sql Server 中將由逗號“,”分割的一個字串轉換一個表集,並應用到 in 條件中

Sql Server 中將由逗號“,”分割的一個字串,轉換為一個表,並應用與 in 條件 select * from tablenmae where id in(1,2,3) 這樣的語句和常用,但是如果in 後面的 1,2,3是變數怎麼辦呢,一般會用字串連

shell如何將文字檔案字串換行後轉換陣列

1 #!/bin/sh   2 #首先判斷有沒有啟動失敗的檔案,有則處理   3 if [ -f "./task_start_failed.log" ]&&[ ` ls -l task_start_failed.log| awk '{print $5}' `

js將字串轉換一維二維陣列

在Js程式設計中,有時候需要將一個字串轉換為一維陣列或者是二維陣列,現在分享給大家我自己把字串轉換為陣列的方法。 直接上原始碼:   <script type="text/javascript">   //這是需要轉換的字串     var scoreStr =

圖片(路徑)轉換陣列字串字串轉換圖片並存儲至指定目錄

package diiwon;   import java.io.File;   import java.io.FileInputStream;   import java.io.FileOutputStream;   import java.io.IOException;

shell將字串分割陣列

找到有兩種方法: 使用內建的分割符IFS str="192.168.31.65" OLD_IFS="$IFS" #儲存舊的分隔符 IFS="." array=($str) IFS="$OLD_IFS" # 將IFS恢復成原來的 for i in "${!array[

PHP 將引數轉換陣列格式

php將引數轉換為陣列格式(&連線的引數) public static function paramToJson($param) { $array = array(); $paramArrs = explode('&', $

原生js將字串轉化陣列

題目: 如圖:將以下字串轉換為二維陣列形式 var str = `1df fg -,d aew e';e df" s d dd `; 解決辦法:陣列空行分割在宮格分割 程式碼: var stringToArray = function

MyBatis操作PostgreSQL中時間字串轉換timestamp型別

    在插入String型別的屬性到表字段型別為timestamp的格式轉換:TO_TIMESTAMP(#{引數}, 'yyyy-mm-dd hh24:mi:ss')或者TO_TIMESTAMP(#{引數}, 'yyyy-mm-dd') 例:if (record.實體類屬性

字串轉換數字

C當中有一些函式專門用於把字串形式轉換成數值形式。 printf()函式和sprintf()函式 -->通過轉換說明吧數字從數字形式轉換為字串形式; scanf()函式把輸入字串轉換為數值形式; 應用場景: 編寫程式需要使用數值命令形參,但是命令形參被讀取為字串。要使用數值必須先把字串轉換為數字

C# 將字串轉換MD5值

StrConversionMD5: 方法能夠將傳入的字串轉換為MD5值 namespace MD5加密 {     class Program     {         static void Main(

Java將字串轉換時間,支援多種格式

適用格式 //2017/11/25    11:11:11//2017-11-25 11:11:11//2017.11.25 11:11:11//2017/11/25//2017-11-25//2017.11.25 public String judg

使用ParseExact方法將字串轉換日期格式

實現效果: 知識運用:    DateTime結構的ParseExact方法     public static DateTime ParseExact(string s,string format,IFormatProvider provider);   實現程式碼: