我正在使用sql语言。我想从字符串中选择substring
:Rayan
。
当我执行时,select substring(col1, 1, 5) from table1
它可以正常工作。
我的问题是,如果我给出的字符串长度超过它的长度,它会显示相同的结果吗?
即select substring(col1, 1, 6) from table1
结果:Rayan
现在我需要:如果我们给出的长度超过字符串长度,它将不会返回任何内容。有人有任何想法吗?
答案 0 :(得分:3)
您正在使用子字符串函数。您指定了最大长度。
SUBSTRING(表达式,开始,长度)
<强>参数强>
<强>表达强> 是字符,二进制,文本,ntext或图像表达。
开始强> 是一个整数或bigint表达式,指定返回字符的起始位置。如果start小于1,则返回的表达式将从表达式中指定的第一个字符开始。在这种情况下,返回的字符数是start + length-1或0之和的最大值。如果start大于value表达式中的字符数,则返回零长度表达式。
<强>长度强> 是一个正整数或bigint表达式,指定将返回表达式的多少个字符。如果length为负数,则会生成错误并终止语句。如果start和length的总和大于表达式中的字符数,则返回从start开始的整个值表达式。
答案 1 :(得分:1)
如果您尝试选择的长度(以字符为单位)大于,则可以检查列的长度并有条件地显示无输出:
SELECT id,
CASE WHEN CHAR_LENGTH(col1) <= 10 THEN SUBSTRING(col1, 1, 10)
ELSE ''
END AS cond_col1
FROM table1
您可以将值10
替换为您的用例中有意义的值(您没有在OP或小提琴中提供此信息),例如一栏。
答案 2 :(得分:0)
您可以按照以下方式尝试 -
select substring(col1, 1,if(5<=length(col1),5,0))
from table1