sqlserver 分段擷取字串

2021-06-19 11:54:54 字數 1799 閱讀 3106

問題:最近在專案上碰到乙個關於清單排序的問題,系統根據清單編號進行排序,而資料庫儲存的清單編號是字串型別,當碰到清單編號為207-1,207-10,207-2這種情況時,頁面排序順序就為 207-1,207-10,207-2;正確的順序應該是 207-1,207-2,207-10。

考慮到表中清單編號有一二三四級不同的結構,所以要對清單的結構進行判斷,然後分段擷取字串。

在網上搜了很多都是關於固定結構的字串擷取方式,所以將自己寫的條件判斷擷取貼出來,有待改進之處還請多指教。(第一次發技術貼)

select charindex('-',ipqb_code), ipqb_code 

--擷取第一層(判斷是否存在字元'-'。存在,取字元'-'左邊的字串,不存在,取整個字串)

,case when charindex('-',ipqb_code) > 0 then left(ipqb_code,charindex('-',ipqb_code)-1) else ipqb_code end ipqb_code1

--擷取第二層(判斷是否存在字元'-',存在,將第乙個字元'-'及其左邊的字元用空字串替換,再判斷替換後的字串是否包含'-',包含,則取替換後的字串中字元'-'左邊的字串,否則,反轉然後取字元'-'右邊的字串;else取'0')

,case when charindex('-',ipqb_code) > 0

then

case when charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')) > 0

then left(stuff(ipqb_code,1,charindex('-',ipqb_code),''),charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),''))-1)

else right(ipqb_code,charindex('-',reverse(ipqb_code))-1)

endelse '0'

end ipqb_code2

--擷取第三層(與第二層邏輯一樣,只是多包一層)

,case when charindex('-',ipqb_code) > 0

then

case when charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')) > 0

then

case when charindex('-',stuff(stuff(ipqb_code,1,charindex('-',ipqb_code),''),1,charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')),'')) > 0

then left(stuff(stuff(ipqb_code,1,charindex('-',ipqb_code),''),1,charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')),''),charindex('-',stuff(stuff(ipqb_code,1,charindex('-',ipqb_code),''),1,charindex('-',stuff(ipqb_code,1,charindex('-',ipqb_code),'')),'')) - 1)

else right(ipqb_code,charindex('-',reverse(ipqb_code))-1)

endelse '0'

endelse '0'

end ipqb_code3

from bill

SQLServer擷取字串常用函式

sql server中一共提供了三個字串擷取函式 left right substring 函式說明如下 語法 left character,integer 引數介紹 引數1 要擷取的字串,引數2 擷取字元個數。返回值 返回從字串左邊開始指定個數的字元。示例sql select left sqlse...

Repeater 擷取字元

1.前台 2.後台 protected string getdemand string strdemand string titledemand strdemand.replace r n replace string htmltitle return htmltitle 方法二 string.fo...

mysql擷取字元

前言 整理圖書資料,由於圖書資料之前沒有經過人工矯正爬取完成後直接匯入資料庫而且資料來源很多,無奈只好整理資料。錯誤資料展示 小馬寶莉2018年第2集 總第16集 大師計畫 4月刊 李敖回憶錄 大師珍藏版 噹噹全國獨家 正版全新直髮 宮澤賢治小森林童話 水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒...