【问题标题】:SQLite3 - How to select a specific number from a stringSQLite3 - 如何从字符串中选择特定数字
【发布时间】:2017-07-28 11:49:26
【问题描述】:

我有一个名为shoes的表:

Shoe_model     price    sizes
-----------------------------------------------
Adidas KD      $55      '8, 9, 10, 10.5, 11, 11.5'

Nike Tempo     $56      '8, 9, 11.5'

Adidas XL      $30.99   '9, 10, 11, 13'

如何为特定尺寸选择一行?

我的尝试:

SELECT * FROM shoes WHERE sizes = '10';

有没有办法解决这个问题?使用 LIKE 将获得 10 和 10.5 两种尺寸,因此我正在尝试使用 WHERE。谢谢

【问题讨论】:

  • 使用sizes like '%10,%' or right(sizes,2)='10'。规范化数据会更好
  • 或使用CONCAT(sizes,',') like '%10,%'
  • 我收到no such function: CONCAT
  • 我的代码:SELECT * FROM shoes WHERE CONCAT(sizes,',') like '%10,%'
  • 快速谷歌搜索“sqlite concat”发现:stackoverflow.com/questions/6134415/…。基本上,它是|| 运算符,就像在Oracle,Postgres 中

标签: sql sqlite


【解决方案1】:

首先,您不应该将大小存储为逗号分隔的字符串。您应该有一个单独的行,每个节目每个尺寸一排。这就是存储东西的 SQLish 方式。

有时,我们会被其他人非常糟糕的设计决策所困扰。你可以这样做:

SELECT *
FROM shoes
WHERE ',' || '10' || ',' LIKE '%,' || sizes || ',%';

分隔符很重要,因此“10”与“100”不匹配。

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多