Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用分号对字符串中的字符组进行计数_Sql_String_Sapb1 - Fatal编程技术网

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,所以它限制了它。