【发布时间】:2019-08-09 01:45:16
【问题描述】:
我有一个 VARCHAR 列,用户在其中存储来自输入、选择、复选框和输入类型日期的自定义数据。
[{"i":24,"v":[0,1,4]},{"i":26,"v":[2,3,6,10]},{"i":41,"v":"2019-03-18"},{"i":27,"v":[26]},{"i":6,"v":"Very happy to be here."},{"i":13,"v":4},{"i":22,"v":9},{"i":3,"v":"Numerous"},{"i":4,"v":3},{"i":29,"v":[2,3]},{"i":30,"v":[3,4]}]
我知道 ID 41 是一个日期。如果 ID 41 存在并且数据大于固定日期,我想选择这个用户。
我的想法是使用 REGEXP 来测试 ID 41 是否存在:REGEXP \'(\{"i":41,) 然后捕获日期并测试它(TO_DATE ?)。
我该怎么做这第二部分?
编辑 - 我找到了使用 REGEXP_SUBSTR 捕捉日期的解决方案:
SELECT user_id, REGEXP_SUBSTR(my_json_col, \'(?<=\{"i":41,"v":")(.*?)(?="\})\') AS dt FROM ...
=> 日期:2019-03-18
我仍然无法测试该值。
【问题讨论】:
-
我将您对“上”/“下”的使用编辑为“大于”/“小于”。大写和小写通常是指大小写,而不是不等式。
-
您使用的是哪个 RDBMS:MySQL、Oracle、SQL Server...?请在您的问题中添加相关标签。
-
谢谢比尔。我用 MySQL