如何修剪(删除)字符串右侧到第一个空格的所有字符?
这是我正在尝试做的事情:
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/