我在MYSQL表字段中有這個字符串1111-2222-3-4-55-123456789
。需要使用MYSQL中的分隔符分隔字符串
我需要做的是將前面的5個參數分開,用-
分開。就像我需要單獨:
1111
2222
3
4
55
我在MYSQL表字段中有這個字符串1111-2222-3-4-55-123456789
。需要使用MYSQL中的分隔符分隔字符串
我需要做的是將前面的5個參數分開,用-
分開。就像我需要單獨:
1111
2222
3
4
55
雖然我沒有測試它,這應該解決您的問題。
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-123456789| 1111 | 2222 | 3 | 4 | 55 |
這是分裂與增加指數數量和通過第2部分的每個部分的最後指數重新拆分它的文字PART5
$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];// 123456789
我需要做的是在SELECT語句在我的SQL :-(它完全在PHP,但如果你能在MySQL查詢HEP請 –
然後爲什麼你在標籤列表中包含php? – Shadow
如果字符串中的每個部分的長度是恆定的,那麼
select replace(left(fieldname,16),'-','') as alias from table
會做的伎倆。
UPDATE:
如果你需要有一個單獨的字段中的每個單獨的值,那麼這是一個稍微複雜些:
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
您可以創建功能:
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.所有這些例子你c一個輕鬆構建自己的查詢
來源:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+
SELECT DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX('1111-2222-3-4-55-123456789','-',i+1),'-',-1) x FROM ints;
+-------------------+
| x |
+-------------------+
| 1111 |
| 2222 |
| 3 |
| 4 |
| 55 |
| 123456789|
+-------------------+
Thanks..it works perfect –