【问题标题】:MYSQL SELECT multiple values between "" in ColumnMYSQL SELECT 列中“”之间的多个值
【发布时间】:2014-10-29 07:28:54
【问题描述】:

我有一列返回

a:2:{i:0;s:10:"Properties";i:1;s:14:"Movable Assets";}

我只想返回:

Properties, Movable Assets

如何使用 select 语句来检索 " 符号之间的值

【问题讨论】:

  • 考虑到模式可能并非在所有情况下都相同,这将是相当困难的。而在 mysql 中没有这样的爆炸功能来完成这项工作。最简单的方法是使用应用层来处理这个问题。
  • 我不能使用应用层,这是使用一个只接受SQL输出报告的WordPress插件

标签: mysql sql


【解决方案1】:

这些是序列化值,你可以使用 php 来获得你想要的结果。

您可以使用 , unserialize 返回一个数组,然后您可以使用 implode 获取逗号分隔值。

example

【讨论】:

    【解决方案2】:

    使用SUBSTRING_INDEX()

    SUBSTRING_INDEX() 接受一个字符串参数,后跟一个分隔符和要返回的部分数。使用分隔符拆分字符串后,该部分数将作为单个字符串返回。

    select concat( 
        SUBSTRING_INDEX( 
            SUBSTRING_INDEX( 
                SUBSTRING_INDEX( 
                    'a:2:{i:0;s:10:"Properties";i:1;s:14:"Movable Assets";}',
                    '"',
                    4
                ),
                '"',
                2
            ),
            '"',
            -1
        ),
        ",",
        SUBSTRING_INDEX(
            SUBSTRING_INDEX( 
                SUBSTRING_INDEX(
                    'a:2:{i:0;s:10:"Properties";i:1;s:14:"Movable Assets";}',
                    '"',
                    4
                ),
                '"',
                4
            ),
            '"',
            -1
        )
    );
    

    【讨论】:

    • 谢谢,这可行,但我仍然有问题,很抱歉我没有在原始问题中提到它。还有条目“属性”和单独的“可移动资产”。使用上述答案时,这些将作为“属性、属性”和“可移动资产、可移动资产”返回。有没有解决的办法?我在此之前使用了一个案例陈述,但我无法将其过滤掉。我尝试添加 AND entry_id = 'Properties' 然后 entry_value else,'Movable Assets' 相同,但它们不断返回重复项
    • 这里是 CASE 语句: MAX(case when field_id = 79 then (select concat( SUBSTRING_INDEX( SUBSTRING_INDEX( SUBSTRING_INDEX( entry_value, '"', 4 ), '"', 2 ), '" ', -1 ), ",", SUBSTRING_INDEX( SUBSTRING_INDEX( SUBSTRING_INDEX( entry_value, '"', 4 ), '"', 4 ), '"', -1 ) )) end) 作为 InterestedIn,
    【解决方案3】:

    使用LOCATE()SUBSTRING() 的组合。

    定义:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html

    或者更好——将数据迁移到实际可检索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      相关资源
      最近更新 更多