[英]How to Select a substring in Oracle SQL for specific length only
我在列中有以下值
第一個值的長度是48。
第二個值的長度是97。
現在的條件是,如果長度為任何值的97,則僅使用前48個字符,否則使用已有的字符。
SUBSTR函數已經在那里
SELECT SUBSTR(CLNT_ID,0,48) FROM CLNT;
這很好,現在我只想在值的長度等於97的情況下使用它。
此Select語句是一個存儲過程的一部分。 請協助為此確定正確的查詢。 提前致謝
SELECT
case
when regexp_like (CLNT_ID , '^[[:alnum:]]{97}$')
then SUBSTR(CLNT_ID,0,48)
else null
end label1, CLNT_ID
FROM CLNT;
我認為最簡單的方法是使用length()
:
select (case when length(clnt_id) = 97
then substr(clnt_id, 1, 48)
else clnt_id
end)
from clnt;
這似乎是邏輯的最簡單實現。 另請注意, substr()
的第二個參數從“ 1”開始計數,而不是從“ 0”開始計數,因此應在此處使用“ 1”(效果是相同的)。
您也可以這樣嘗試
SELECT CASE SIGN( LENGTH(:p_text) - 97 )
WHEN -1 THEN
:p_text
ELSE
SUBSTR(:p_text, 1, 48)
END
FROM dual;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.