字符串截断长度,但不允许切断单词

War*_*ker 17 mysql sql substring

我想在一定长度上限制MYSQL中的字符串字段长度,但我不希望发生任何切断字.

当我做:

SELECT SUBSTRING('Business Analist met focus op wet- en regelgeving', 1, 28)
Run Code Online (Sandbox Code Playgroud)

我得到这个作为输出:

Business Analist met focus o
Run Code Online (Sandbox Code Playgroud)

但我想

Business Analist met focus
Run Code Online (Sandbox Code Playgroud)

如何强制限制28个字符,但是要防止切断单词?当然,在[插入所选择的编程语言]中很容易;-),但我想知道在MYSQL中是否可以在一个简单的语句中.

Jef*_*rod 11

拆分空间怎么样:

SELECT SUBSTRING_INDEX('Business Analist met focus op wet- en regelgeving',' ',4)
Run Code Online (Sandbox Code Playgroud)

将返回

Business Analist met focus
Run Code Online (Sandbox Code Playgroud)


And*_*y M 10

让我们@str的字符串和@len初始位置切入.然后必要的步骤可能是:

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

  2. 反转子串.

  3. 找到反转子串中第一个空格的位置.

  4. 减去1职位.但如果没有找到空间,请保持这个位置0.

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

  6. 取第一个(最左边)cutpos字符@stras 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
Run Code Online (Sandbox Code Playgroud)