好的,我已经查找了几种完成此操作的方法,并且它们都不适用于我,请告诉我为什么我尝试的方法不起作用的一些细节。在mysql中分割字符串
我试过SUBSTRING_INDEX
,因为我们大多数人都知道它只是基于字符串中分隔符的数量进行“拆分”,并且它对于所有行都不是相同数量,所以这是一个没有去,我也试过在这里找到的方法http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
我再次相信它会基于您的查询分隔符的数量。
我已经搜索并搜索了一种方法来完成这项工作,而我无法找到一种方法来实现它。我仍然是PHP的一个新手,所以这可能是一个简单的修复,我只是忽略它,但我不确定。
以下是我正在处理的内容;
这是SQL查询
$sql = "SELECT * FROM offers WHERE type='$type' and country='$membercountry' LIMIT $start, $limit";
$result = mysql_query($sql);
country
的是,有我的逗号分隔的字符串列。有些行只是有一些像US
而其他人有US,AU,CA,GB
我需要拆分这些的原因是因为实际显示提供的页面检查,看用户国家是否匹配提供国,它显然会去当它将整个长字符串读取时不匹配,这意味着这些优惠不会显示给用户。
我和我的一位朋友聊过,他说要用explode()
,但我确信你不能在sql查询中使用explode()
。
我知道我可能没有解释得这么好,我一直在这个项目上工作,所以我有点累。此外,作为一个说明,我知道我可以将它提供给每个提供不同国家/地区的优惠的多行,但其中一些优惠允许所有国家/地区执行,这意味着对于一个优惠我想要243行,这会让我觉得我只是马虎!
如果有人能给我一个正确的方向,我会非常感激!
谢谢,凯西
“正确的方向”是规范化数据结构:而不是将此类列表存储在分隔字符串中,而是创建一个将“(offer,country)”对关联的单独表。 [我对类似问题的回答]中的更多详细信息(http://stackoverflow.com/a/10881627/623041)。 – eggyal