需要在MYSQL

时间:2015-10-13 13:30:58

标签: mysql sql

我在MYSQL表字段中有这个字符串1111-2222-3-4-55-12345678901234567 1

我需要做的是分隔用-分隔的前5个参数。就像我需要分开一样:

1111
2222
3
4
55

5 个答案:

答案 0 :(得分:4)

$stringElements = explode('-', $string);
echo $stringElements[0];// 1111
echo $stringElements[1];// 2222
echo $stringElements[2];// 3
echo $stringElements[3];// 4
echo $stringElements[4];// 55
$stringElements[5];// 12345678901234567 1

答案 1 :(得分:0)

如果字符串中每个部分的长度是常数,那么

select replace(left(fieldname,16),'-','') as alias from table

会做到这一点。

更新:

如果您需要在单独的字段中包含每个单独的值,那么它会稍微复杂一些:

SELECT REPLACE(SUBSTRING(SUBSTRING_INDEX(fieldname, '-', 1), LENGTH(SUBSTRING_INDEX(fieldname,'-', 0)) + 1) as first,
REPLACE(SUBSTRING(SUBSTRING_INDEX(fieldname, '-', 2), LENGTH(SUBSTRING_INDEX(fieldname,'-', 1)) + 1) as second,
...
FROM table

答案 2 :(得分:0)

即使我没有测试它,这应该可以解决你的问题。

SELECT `mystring`, 
    SUBSTRING_INDEX(mystring,'-',1) AS part1, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(mystring,'-',2),'-',-1) AS part2, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(mystring,'-',3),'-',-1) AS part3, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(mystring,'-',4),'-',-1) AS part4, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(mystring,'-',5),'-',-1) AS part5, 
FROM my_table;

------------------------------------------------------------------------------
| mystring                           | part1 | part2 | part3 | part4 | part5 |
------------------------------------------------------------------------------
| 1111-2222-3-4-55-12345678901234567 | 1111  | 2222  | 3     | 4     | 55    |

这是将文本拆分为增加的索引计数,并将其从每个部分的最后一个索引重新拆分为part2到part5

答案 3 :(得分:0)

您可以创建功能:

CREATE FUNCTION SPLIT_STR(
   x VARCHAR(255),
   delim VARCHAR(12),
   pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
   LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
   delim, '');

然后像

一样使用它
SELECT SPLIT_STR('1-2-3', '-', 1);

它将返回1.通过所有这些示例,您可以轻松构建自己的查询

来源:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

答案 4 :(得分:0)

collectionView:layout:sizeForItemAtIndexPath: