MySql 修剪字符直到一个空格

标签 mysql sql

如何修剪(删除)字符串右侧到第一个空格的所有字符?

这是我正在尝试做的事情:

set @s:='May the Gods watch over your battles, my friend!';

select if(length(@s) < 10,@s,left(@s,10)) a;

#output from above: 'May the Go'

#desired output: 'May the'

为了避免像 May the Go 这样奇怪的输出,我试图从右边修剪所有字符,直到第一个空格,所以输出是 May the

如何在 sql 语句本身中完成此操作。我找不到可以执行此操作的内置函数?

最佳答案

这在 Microsoft SQL 中有效,如果您将 CHARINDEX 替换为 INSTR,它应该有效

select substring(@s,1,charindex(' ',reverse(@s)))

在下面添加了我的 SQL fiddle 版本,与 Microsoft SQL 中的工作方式略有不同

http://sqlfiddle.com/#!2/d41d8/44718

select @s,left(@s,10-locate(' ',reverse(@s)));

数据库中的例子

select theFld, 
CASE    
     WHEN  length(theFld) <= 20 THEN theFld  
     ELSE
        left(theFld,20-locate(' ',reverse(left(theFld,20))))   
     END  as Abbr 
FROM example;

请参阅此 SQL fiddle :http://sqlfiddle.com/#!2/beac7/6

关于MySql 修剪字符直到一个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822775/

相关文章:

java - 对于 5000 条记录表,类似 MySQL 的查询运行速度极慢

sql - 我需要将专为 MySQL 设计的查询翻译为适用于 SQL Server 2005

sql - 为什么我的 DLookup 生成 "invalid use of null"错误 : 94

mysql - 在本地开发服务器上升级 phpmyadmin

mysql - 如何在mysql中创建包含3个表的嵌套查询

php - 从 MySQL 填充两列 HTML

sql - 在部署时将大量数据导入 SQL Server (Express) 数据库

javascript - SQL查询多个不相关的表

mysql - 谁能告诉我创建触发器语法有什么问题吗?

mysql - 创建ejabberd用户