2015-06-25 69 views
2

我正在使用sql語言。我想從字符串中選擇substringRayan在sql中選擇子字符串

當我執行,select substring(col1, 1, 5) from table1它工作正常。

我的問題是,如果我給字符串的長度超過它的存在,它會顯示相同的結果?

select substring(col1, 1, 6) from table1 結果:Rayan

現在我需要:如果我們給比字符串長度多長,它不會返回任何東西。任何人有任何想法?

小提琴:http://sqlfiddle.com/#!2/90438/2

+1

MySQL或Postresql? (它們的字符串函數有點不同......) – jarlh

回答

1

您可以檢查柱的長度和有條件地顯示在事件沒有輸出,您正試圖(以字符)選擇長度超過此長度更大

SELECT id, 
CASE WHEN CHAR_LENGTH(col1) <= 10 THEN SUBSTRING(col1, 1, 10) 
ELSE '' 
END AS cond_col1 
FROM table1 

您可以更換值10與你的用例中有意義的東西(你沒有在OP或Fiddle中給我們這些信息),例如一列。

3

您是使用字符串函數。你指定了最大長度。

SUBSTRING(表達,啓動,長度)

參數

表達 是一個字符,二進制,文本,ntext或圖像表達。

start 是一個整數或bigint表達式,指定返回字符的起始位置。如果start小於1,則返回的表達式將從expression中指定的第一個字符開始。在這種情況下,返回的字符數是start + length - 1或0之和的最大值。如果start大於值表達式中的字符數,則返回零長度表達式。

長度 是一個正整數或bigint表達式,它指定將返回表達式的多少個字符。如果長度爲負值,則會生成錯誤並且語句被終止。如果開始和長度的總和大於表達式中的字符數,則返回從開始處開始的整個值表達式。

0

您可以嘗試按照如下─

select substring(col1, 1,if(5<=length(col1),5,0)) 
from table1