admin

字符串按长度截短,但不允许切碎单词

sql

我想将MYSQL中的字符串字段长度限制为一定的长度,但是我不希望发生任何切碎的单词的情况。

当我做:

SELECT SUBSTRING('Business Analist met focus op wet- en regelgeving', 1, 28)

我得到这个作为输出:

Business Analist met focus o

但是我想

Business Analist met focus

如何强制执行28个字符的限制,但又不能切碎单词呢?当然,在[这里选择插入的编程语言] ;-)中很容易,但是我想用一条简单的语句知道在MYSQL中是否可行。


阅读 214

收藏
2021-05-10

共1个答案

admin

@str是你的字符串,并@len在初始位置进行切割。然后,必要的步骤可能是:

  1. 取的最左边@len字符@str

  2. 反转子字符串。

  3. 在反向子字符串中找到第一个空格的位置。

  4. 1从该位置减去。但是,如果找不到空间,请保留该位置0

  5. 从中减去找到的位置@len并调用它cutpos

  6. 以as的第一个(最左边)cutpos字符@str为例str1,将所有其他字符(从开始cutpos+1)为as 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

2021-05-10