我有一个名为'fits'的字段,其中包含逗号分隔值,如下所示:
120102199105199205,130101199105199205,120101199107199201
对于每个数字,前6位数字是装配代码,最后12位数字是唯一的日期范围。
现在,我知道CSV是令人讨厌的并且违反了1NF,但另一种方法是将数据规范化为更多的表格,因为潜在的记录数量会使这些表格变得怪异
因此,为了保持简单,我正在尝试编写一个查询来根据提供的配件代码和一系列日期来选择行。到目前为止,我有这个:
select data from table
where fits = any(
SELECT fits
FROM table
WHERE fits LIKE '120102')
AND fits BETWEEN "120102199105000000" AND "120102999999199205"
问题是,BETWEEN ... AND不适用于CSV数据
有没有办法在查询中使用某种通配符对这种类型的CSV数据应用范围,还是唯一可以规范化的sql端解决方案?
答案 0 :(得分:0)
如果要对拟合列中的值使用BETWEEN,则需要对数据进行标准化。
这不一定是个问题。潜在的行大小有多大?对于现代数据库服务器来说,有多少记录不是问题,你会感到惊讶。
对于现代PC上的任何RDMS mysql,mariadb,mssql,postgresSQL来说,100万,1000万,1亿真的不是问题。规范化您的数据,一切都会变得更加轻松。