我正在使用MySQL,我有一个函数可以接受来自表行的col数据,并返回一个表值函数。例如,像这样的函数:
CREATE FUNCTION [dbo].[wordlongerthan4](
@input text
) returns @result table(
pos int,
word varchar,
)
将返回长于4char的单词及其位置。
我想做一个类似下面的SQL
select t.name,wordlongerthan4(t.content) from sometable as t;
在桌子上
------------------------------------------------------------------
| id | name | content |
------------------------------------------------------------------
|1 | my1 | i love something and nothing |
|2 | my2 | It is a sunny day today |
得到结果:
|name | pos | word |
--------------------------------
|my1 |8 |something |
|my1 |22 |nothing |
|my2 |9 |sunny |
|my2 |20 |today |
我怎么能写sql?(函数wordlongerthan4已经存在,我只需要sql!)
答案 0 :(得分:0)
你在谈论的是:
就像ajreal所说,这是最好在应用程序层完成的事情,大概是在你的php / java /之内。
目前没有内置的字符串爆炸/分割功能,但这里的这个问题可能有用:Equivalent of explode() to work with strings in mysql。
答案 1 :(得分:0)
您可以(ab)使用MySQL 8中的新JSON_TABLE函数执行此操作:
set @input = 'i love something and nothing';
SELECT Value, LENGTH(Value) as Length, LOCATE(Value, @delimited) as pos
FROM
JSON_TABLE(
CONCAT('["', REPLACE(@delimited, ' ', '", "'), '"]'),
"$[*]"
COLUMNS(
Value varchar(50) PATH "$"
)
) data
where LENGTH(Value) > 4;