Sql 使用分号对字符串中的字符组进行计数
我搜索了一下,但找不到这个问题的答案。操纵字符串不是我的强项 我有以下示例字符串Sql 使用分号对字符串中的字符组进行计数,sql,string,sapb1,Sql,String,Sapb1,我搜索了一下,但找不到这个问题的答案。操纵字符串不是我的强项 我有以下示例字符串 7849;7985;8044;8253;8254;16733 我需要计算字符串中“ID”的数量。使用上面的示例,它应该显示为6,因为分号之间的每组数字表示一个ID 非常感谢您的帮助。您可以使用字符串函数计算分号的数量,然后添加一个: select (length(str) - length(replace(str, ';', '')) + 1 as num_elements 也就是说,您应该修复数据模型,这样就不
7849;7985;8044;8253;8254;16733
我需要计算字符串中“ID”的数量。使用上面的示例,它应该显示为6,因为分号之间的每组数字表示一个ID
非常感谢您的帮助。您可以使用字符串函数计算分号的数量,然后添加一个:
select (length(str) - length(replace(str, ';', '')) + 1 as num_elements
也就是说,您应该修复数据模型,这样就不会在字符串中存储多个值。这些应该位于另一个表的单独行上
如果您不使用MySQL,一些数据库使用
leng()
而不是LENGTH()
感谢您的回复,Gordon,但它不起作用。它可以在4之前运行,但是如果是6或者更大,它只会在7停止,使用下面的代码。7809;7850;7890;7917;7938;7986;8045;8072;15149-这只给出了7。使用以下代码len(CAST(A.U_AceqCodes AS VARCHAR))-len(replace(CAST(A.U_AceqCodes AS VARCHAR),“;”,”)+1不幸的是,数据来自SAP B1中的一个插件,我无法控制数据模型。@NickJones。(1) 这不是答案中的代码。(2) 这不是有效的MySQL语法。使用上面的代码,我得到了替换函数需要3个参数。所有这些参数现在都在工作,问题是当我将字段强制转换为varchar时,我没有包含MAX,所以它限制了它。