如果第三个参数为NULL,则不要使用SUBSTRING_INDEX

时间:2011-12-26 08:58:44

标签: mysql substring

我有一个新闻脚本,可以按主页上的段落切换新闻。我希望用户输入一个数字,然后应该删除新闻。该号码也存储在数据库中。

我目前的代码:

SUBSTRING_INDEX(newsText, "\n", newsShortbreaks + 1)

用户还应该能够将该字段留空,以显示整个文本。问题:仍然只有一个parahraph因为NULL + 1 = 1。

有没有人有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:3)

case statement中使用SUBSTRING_INDEX,只在某个参数不为空时才接受子字符串。

类似的东西:

SELECT
    CASE WHEN @newsShortbreaks IS NOT NULL 
         THEN SUBSTRING_INDEX(newsText, "\n", @newsShortbreaks + 1) 
         ELSE newsText 
    END

FROM MyTable

我目前只有一个MS SQL Server实例,但我相信这种通用方法可以在MySql中使用。

Here is a MySql-specific example.

答案 1 :(得分:1)

最好在您的select / update / insert中使用以下结构:

if(newsShortbreaks is not null, SUBSTRING_INDEX(newsText, "\n", newsShortbreaks + 1), newsText)

所以如果newsShortbreaks =null只获得newsText。