所以我的问题很简单:
我在SQL中有一列,这是一个用逗号分隔的列表(即cats,dogs,cows,
),我需要 仅 使用sql
来计算其中的项目数(所以无论我的功能是什么(现在将其称为fx)都将像这样工作:
SELECT fx(fooCommaDelimColumn) AS listCount FROM table WHERE id=...
我知道那是有缺陷的,但是您可以理解(顺便说一句,如果的值fooCommaDelimColumn
是cats,dogs,cows,
,则listCount应该返回4
…)。
就这些。
没有内置函数可以计算字符串中子字符串的出现次数,但是您可以计算原始字符串与相同字符串之间的差异(不带逗号):
LENGTH(fooCommaDelimColumn) - LENGTH(REPLACE(fooCommaDelimColumn, ',', ''))
现在已经差不多在8年的时间里对其进行了多次编辑(哇!),所以为了清楚起见:上面的查询不需要+ 1
,因为OPs数据带有多余的逗号。
确实,通常情况下,对于如下所示的字符串:foo,bar,baz
正确的表达式为
LENGTH(col) - LENGTH(REPLACE(col, ',', '')) + 1
问题内容: 我需要运行类似的查询: 但是我希望子选择返回逗号分隔的列表,而不是数据列。这有可能吗?如果可以,怎么办? 问题答案: 您可以使用GROUP_CONCAT执行该操作,例如
问题内容: 我有一个未标准化的表,其中的列包含逗号分隔的列表,该列表是另一个表的外键: 我想将此数据读入不提供过程语言的搜索引擎中。 那么,有没有一种方法, 要么 就这一栏中加入 或 该数据运行查询插入相应的条目到一个新的表?结果数据应如下所示: 如果DBMS支持返回表的函数,但MySQL显然不支持,我可以想到一个解决方案。 问题答案: 在MySQL中,可以通过以下方式实现 现在要获取逗号分隔的v
问题内容: 我需要这个问题的帮助。 在MYSQL表中,我有一个字段: 我需要找到艺术家uid 401的所有记录 我做这个 我所有记录的artist_list字段值仅是“ 401”,但是如果我有11,401,则此查询不匹配。 任何的想法 ? (我无法使用LIKE方法,因为如果艺术家uid为3(匹配30、33、3333)… 问题答案: 短期解决方案 使用FIND_IN_SET函数: 长期解决方案 标准
问题内容: 我有看起来像这样的数据: 对于每个customer_id,我需要用逗号分隔的列表,以指示该客户运营的月份: 等等。如何使用SQL Server 2005 SQL(而不是T-SQL)轻松生成此逗号分隔的列表? 我在Stack Overflow和其他地方在这里看到的大多数解决方案似乎都是基于联接多个行值而不是列值来创建逗号分隔的列表: T-SQL FOR XML路径(’‘) 关联的子查询与
我使用PHP的Filter Functions(具体FILTER_VALIDATE_REGEXP)来验证输入数据。我有一个选项列表,$输入变量可以从列表中指定许多选项。 选项是(不区分大小写): 所有 奖励 加入 促销 流 签入 verified_checkin $输入变量几乎可以有任何值的组合。可能的成功案例是: all(值可以是all,也可以是逗号分隔的其他值列表,但不能同时是两者) 我能想到
问题内容: 我有一张这样的桌子: 我想测试3和15是否在称为NUMBERS的Blob中。并可以看到无法使用LIKE %% 仅选择ID为2且具有三个scoulb的行… 问题答案: 这个也可以: 使用IN将查找以逗号分隔的字符串,例如。这两个 在此页面上找到的信息: