我有一个像这样的
的Mysql数据库列+----------------------------+
|PhoneNumber |
+----------------------------+
|0378617186#0381716116# |
+----------------------------+
因此我想将该单个值提取为不同的值。每个电话号码值以hash (#)
分隔。
我把它用于我的PHP登录功能的需要..有些人的电话号码超过1,所以基于我的问题......那个人可以使用第一个号码(0378617186)或第二个号码(0381716116)登录),所以我需要PHP将hash (#)
符号执行到OR
函数。
任何形式的帮助都会对我有所帮助...... 感谢
答案 0 :(得分:1)
如果您确实强制要保留此数据库架构,那么您可以使用以下查询将PhoneNumber列转换为最多10行(您可以相应地调整它,也可以将t1表名更改为您当前使用的表名) :
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t1.PhoneNumber, '#', numbers.n), '#', -1) name
FROM (
SELECT 1 n
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6
UNION ALL SELECT 7
UNION ALL SELECT 8
UNION ALL SELECT 9
UNION ALL SELECT 10
) numbers
INNER JOIN t1
ON CHAR_LENGTH(t1.PhoneNumber) - CHAR_LENGTH(REPLACE(t1.PhoneNumber, '#', '')) >= numbers.n - 1
ORDER BY PhoneNumber, n;