php mysql 中类似爆炸的函数
php explode like function in mysql
我的数据库名称位置中有一列具有这种格式的城市名称和国家/地区名称 New york,America
。我想 运行 一个 select 查询,使用我们在 php 中使用的爆炸函数来分隔这样的值
这样我就可以得到逗号,分隔值
select explode(",",location) from address;
还有别名持有纽约的城市列和美国持有国家价值的别名。这样我就可以在我的存储过程中使用它们,并将这些值插入到 city 和 country
列的引用 table 中
你不能真正 "explode" 或在 all 逗号上拆分,但你可以在 any 逗号上拆分字符串使用SUBSTRING_INDEX
.
SELECT SUBSTRING_INDEX('New york,America', ',', 1);
-> New york
使用组连接
SELECT GROUP_CONCAT( location )
FROM `address`
您还可以 select 行并将其存储为字符串,如果您打算使用函数本身,则使用 explode 函数来分隔值.
CREATE FUNCTION strSplit(x varchar(255), delim varchar(12), pos int)
returns varchar(255)
return replace(substring(
substring_index(x, delim, pos+1),
length(substring_index(x, delim, pos)) + 1
), delim, '');
select strSplit("aaa,b,cc,d", ',', 1) as second;
> b
假设分解是创建N行,那么你可以这样做。
SET @completeString = "Hola,New york,America,!,";
SET @divider = ",";
WITH RECURSIVE strings(m) AS (
SELECT
@completeString
UNION ALL
SELECT
SUBSTRING(m, INSTR(m, @divider)+ 1)
FROM
strings
WHERE
INSTR(m, @divider)!= 0
)
SELECT
SUBSTRING_INDEX(m, @divider, 1) exploted_strings
FROM
strings;
这会给你五行,包括空字符串
+----------------+
|exploted_strings|
+----------------+
| Hola |
| New york |
| America |
| ! |
| |
+----------------+
或者在程序中。
CREATE PROCEDURE explode(IN completeString TEXT, IN divider TEXT)
BEGIN
WITH RECURSIVE strings(m) AS (
SELECT
completeString
UNION ALL
SELECT
SUBSTRING(m, INSTR(m, divider)+ 1)
FROM
strings
WHERE
INSTR(m, divider)!= 0
)
SELECT
SUBSTRING_INDEX(m, divider, 1)
FROM strings;
END
然后这样称呼它
CALL explode ("Hola,New york,America,!,",",");
我的数据库名称位置中有一列具有这种格式的城市名称和国家/地区名称 New york,America
。我想 运行 一个 select 查询,使用我们在 php 中使用的爆炸函数来分隔这样的值
这样我就可以得到逗号,分隔值
select explode(",",location) from address;
还有别名持有纽约的城市列和美国持有国家价值的别名。这样我就可以在我的存储过程中使用它们,并将这些值插入到 city 和 country
列的引用 table 中你不能真正 "explode" 或在 all 逗号上拆分,但你可以在 any 逗号上拆分字符串使用SUBSTRING_INDEX
.
SELECT SUBSTRING_INDEX('New york,America', ',', 1);
-> New york
使用组连接
SELECT GROUP_CONCAT( location )
FROM `address`
您还可以 select 行并将其存储为字符串,如果您打算使用函数本身,则使用 explode 函数来分隔值.
CREATE FUNCTION strSplit(x varchar(255), delim varchar(12), pos int)
returns varchar(255)
return replace(substring(
substring_index(x, delim, pos+1),
length(substring_index(x, delim, pos)) + 1
), delim, '');
select strSplit("aaa,b,cc,d", ',', 1) as second;
> b
假设分解是创建N行,那么你可以这样做。
SET @completeString = "Hola,New york,America,!,";
SET @divider = ",";
WITH RECURSIVE strings(m) AS (
SELECT
@completeString
UNION ALL
SELECT
SUBSTRING(m, INSTR(m, @divider)+ 1)
FROM
strings
WHERE
INSTR(m, @divider)!= 0
)
SELECT
SUBSTRING_INDEX(m, @divider, 1) exploted_strings
FROM
strings;
这会给你五行,包括空字符串
+----------------+
|exploted_strings|
+----------------+
| Hola |
| New york |
| America |
| ! |
| |
+----------------+
或者在程序中。
CREATE PROCEDURE explode(IN completeString TEXT, IN divider TEXT)
BEGIN
WITH RECURSIVE strings(m) AS (
SELECT
completeString
UNION ALL
SELECT
SUBSTRING(m, INSTR(m, divider)+ 1)
FROM
strings
WHERE
INSTR(m, divider)!= 0
)
SELECT
SUBSTRING_INDEX(m, divider, 1)
FROM strings;
END
然后这样称呼它
CALL explode ("Hola,New york,America,!,",",");