SQL新手。使用oracle sql developer版本3.1.07。有什麼方法來分離包含像一串字符串列的元素:SQL:使用分隔符值拆分字符串
dublin.ie;montreal.com;paris.com
我想基礎上,;
這樣我就可以單獨操縱他們分裂他們(爲表的每一行這樣做)。這是因爲我想刪除以.com
結束的所有內容,但不影響其他內容。
我想使用最基本的SQL我可以,因爲我是相當新手,我使用相當舊的版本。
任何想法?再次感謝你們。迄今爲止的幫助非常棒。
SQL新手。使用oracle sql developer版本3.1.07。有什麼方法來分離包含像一串字符串列的元素:SQL:使用分隔符值拆分字符串
dublin.ie;montreal.com;paris.com
我想基礎上,;
這樣我就可以單獨操縱他們分裂他們(爲表的每一行這樣做)。這是因爲我想刪除以.com
結束的所有內容,但不影響其他內容。
我想使用最基本的SQL我可以,因爲我是相當新手,我使用相當舊的版本。
任何想法?再次感謝你們。迄今爲止的幫助非常棒。
我想說表格結構非常糟糕 - 每個域名都應該有一行。對於初學者來說,這將給解決方案帶來很大困難。
你需要一段sql來爲存儲在每個域中的每個域創建一行;分隔列表。
所以dublin.ie; montreal.com; paris.com; bristol.uk
變爲: -
dublin.ie
montreal.com
paris.com
bristol.uk
再沒有.COM行綁定回單行,得到
dublin.ie; bristol.uk
我有一個類似的問題 - 我有一個字段,包含逗號分隔的國家代碼。 我正在爲通用國家/地區工作的報告用戶。我有一個包含國家代碼和國家名的國家表,但逗號分隔的列表不會加入到它,因爲它具有「GB,FR,IT」,其中國家表具有「英國」的「GB」等上。
我解決了這個問題,方法是爲每個逗號分隔值創建一行(在內存中),將這些行連接到COUNTRY表中,返回國家名稱,然後將國家名稱綁定到一行中,像這樣: -
「英國,法國,意大利」。
下面是我使用的代碼 - 它不適合初學者。您可能想嘗試使用REPLACE和INSTR以及SUBSTR,但您需要事先知道每個字段包含多少條目,否則您可能需要使用PLSQL在循環內工作。
如果我是你,我會問DBA(如果可能的話)正確地構造數據,以便字段包含原子值,而不是數組的值。
SELECT ROW_SPLIT.CONTRACT_ID,
WM_CONCAT(ROW_SPLIT.COUNTRY_NAME) AS COUNTRY_LIST
FROM
(SELECT PQ.ID AS CONTRACT_ID,
PQ.COUNTRY_CODE,
COUT.TEXT AS COUNTRY_NAME
FROM
(SELECT ID,
extract(value(d), '//row/text()').getStringVal() AS COUNTRY_CODE
FROM
(SELECT ID,
XMLTYPE('<rows><row>'
|| REPLACE(EXCLUDED_NATIONALITIES, ',', '</row><row>')
|| '</row></rows>') AS xmlval
FROM PROPERTY_CONTRACT
) x,
TABLE(xmlsequence(extract(x.xmlval, '/rows/row'))) d
) PQ
JOIN COUNTRY C
ON C.CODE = PQ.COUNTRY_CODE
LEFT OUTER JOIN TEXT COUT
ON C.CODE = COUT.CODE
AND COUT.CATEGORY = 'COUNTRY'
AND COUT.LANGUAGE = 'en'
ORDER BY PQ.ID,
COUT.TEXT
) ROW_SPLIT
GROUP BY ROW_SPLIT.CONTRACT_ID;
[在一個PL/SQL存儲過程分裂逗號分隔的字符串(的
謝謝史蒂夫,我知道正在使用的數據庫並不理想。另一個存儲這些表將是最好的解決方案。不幸的是,我們正在將一個系統與稱爲IQMS的數據庫結合使用,無論出於何種原因都無法支持這個數據庫(因此無論如何DBA都這麼說)。所以我想我可以做的事是:1.用';'分隔字符串2.將這些臨時存儲在內存中3.刪除該行中的.com任何內容4.將剩餘的行連接成一個字符串並將其放回原始行。你認爲這是完成這項任務的合理途徑嗎?再次感謝!欣賞它! –
是的,最好重構memort中的數據,刪除行,然後將它們拼接回字符串並更新原始行。祝你好運! – Steve
可能重複http://stackoverflow.com/questions/4004377/splitting-comma-separated-string-in-a-pl-sql -stored-proc) – Taryn