iT邦幫忙

0

SQL擷取部分字串中間部分不要

  • 分享至 

  • xImage

如: 55.5X46X50cm 120個/板;18箱/板 (這是某資料庫某table某欄位例如MM002)
只要列出結果 55.5X46X50cm ;18箱/板 (即m字母之後 ;字母之前都要刪除),
可以用substring嗎

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
純真的人
iT邦大師 1 級 ‧ 2022-05-16 22:19:23
最佳解答

借用rogeryao

Q:可以用substring嗎
A:想用也可以XD...(參考其二)

其一方式:取左+取右=結合字串
其二方式:取不要的字串(SubString),在取代掉不要的字串

CREATE TABLE TableX
(MM001 NVARCHAR(20),MM002 NVARCHAR(60));

INSERT INTO TableX 
VALUES
(1 , N'55.5X46X50cm 120個/板;18箱/板'),
(2 , N'155.5X46X50cm 20個/板;300瓶/板'),
(3 , N'255.5X46X50cm 4120個/板;1000罐/板');

SELECT *
FROM TableX;
--其一
SELECT left(MM002,CharIndex(' ',MM002))
+ Right(MM002,len(MM002)+ 1 - CharIndex(';',MM002)) MM002
from TableX
--其二
select replace(MM002,
substring(MM002,CharIndex(' ',MM002),CharIndex(';',MM002) - CharIndex(' ',MM002))
,'') MM002
from TableX

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=f65cc3ef22fce2dc482a1489ca683d31

easypolo iT邦新手 5 級 ‧ 2022-05-28 23:57:32 檢舉

感謝大大的指點,我取大大其一,

1
rogeryao
iT邦超人 8 級 ‧ 2022-05-16 20:20:18
CREATE TABLE TableX
(MM001 NVARCHAR(20),MM002 NVARCHAR(60));

INSERT INTO TableX 
VALUES
(1 , N'55.5X46X50cm 120個/板;18箱/板'),
(2 , N'155.5X46X50cm 20個/板;300瓶/板'),
(3 , N'255.5X46X50cm 4120個/板;1000罐/板');
SELECT MM001,MM002,
d.vals.value('(/TR/TD)[1]','NVARCHAR(10)') + ';' +
d.vals.value('(/TR/TD)[3]','NVARCHAR(10)') AS 'MM002NEW'
FROM (
SELECT MM001,MM002,
CAST('<TR><TD>' + REPLACE(REPLACE(MM002,'cm','cm;'), ';', '</TD><TD>') + '</TD></TR>' AS xml) vals
FROM TableX) AS d

Demo

easypolo iT邦新手 5 級 ‧ 2022-05-22 18:53:10 檢舉

感謝兩位大大

我要發表回答

立即登入回答