php像mysql中的函数一样爆炸

时间:2015-06-03 11:29:27

标签: php mysql database implode

我的数据库名称位置中有一列,其中包含此格式New york,America的城市名称和国家/地区名称。我想运行一个带有explode函数的select查询,我们在php中使用它来分隔这样的值 这样我就可以得到逗号,分隔值

select explode(",",location) from address;

另外还有纽约城​​市专栏的别名和美国国家持有价值的别名。这样我就可以在我的商店程序中使用它们并将这些值插入列city和country

中的引用表中

5 个答案:

答案 0 :(得分:4)

您无法真正“爆炸”或拆分所有逗号,但您可以使用SUBSTRING_INDEX任何逗号上拆分字符串。

SELECT SUBSTRING_INDEX('New york,America', ',', 1);
-> New york

答案 1 :(得分:1)

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

答案 2 :(得分:0)

使用群组连结

   SELECT GROUP_CONCAT( location )
    FROM `address`

答案 3 :(得分:0)

您也可以选择行并将其存储为字符串,如果您打算使用该函数本身,请使用 explode 函数分隔值。

答案 4 :(得分:0)

假设爆炸将创建 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,!,",",");