在sql中选择子字符串

时间:2015-06-25 04:41:19

标签: mysql sql postgresql

我正在使用sql语言。我想从字符串中选择substringRayan

当我执行时,select substring(col1, 1, 5) from table1它可以正常工作。

我的问题是,如果我给出的字符串长度超过它的长度,它会显示相同的结果吗?

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

现在我需要:如果我们给出的长度超过字符串长度,它将不会返回任何内容。有人有任何想法吗?

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

3 个答案:

答案 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