我想将MYSQL中的字符串字段长度限制为一定的长度,但是我不希望发生任何切碎的单词的情况。
当我做:
SELECT SUBSTRING('Business Analist met focus op wet- en regelgeving', 1, 28)
我得到这个作为输出:
Business Analist met focus o
但是我想
Business Analist met focus
如何强制执行28个字符的限制,但又不能切碎单词呢?当然,在[这里选择插入的编程语言] ;-)中很容易,但是我想用一条简单的语句知道在MYSQL中是否可行。
让@str是你的字符串,并@len在初始位置进行切割。然后,必要的步骤可能是:
@str
@len
取的最左边@len字符@str。
反转子字符串。
在反向子字符串中找到第一个空格的位置。
1从该位置减去。但是,如果找不到空间,请保留该位置0。
1
0
从中减去找到的位置@len并调用它cutpos。
cutpos
以as的第一个(最左边)cutpos字符@str为例str1,将所有其他字符(从开始cutpos+1)为as str2。
str1
cutpos+1
str2
SELECT LEFT(str, cutpos) AS str1, SUBSTRING(str, cutpos + 1) AS str2 FROM ( SELECT @str AS str, @len - IFNULL(NULLIF( LOCATE(‘ ‘, REVERSE(LEFT(@str, @len)) ), 0) - 1, 0) AS cutpos ) s