Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
Mysql 返回中间字符串并计数_Mysql - Fatal编程技术网

Mysql 返回中间字符串并计数

Mysql 返回中间字符串并计数,mysql,Mysql,我在一个字段中有一个连接字符串,现在需要从中提取统计信息。 我们需要的是统计马里兰州每个县的记录数量 fieldname county_city存储如下: 马里兰州弗雷德里克-弗雷德里克县-21701 //State trim(substring(SUBSTRING_INDEX(county_city,',',-1),1,3)) as state //city SUBSTRING_INDEX(county_city,'-',1) as city_state //zip code SUBSTR

我在一个字段中有一个连接字符串,现在需要从中提取统计信息。 我们需要的是统计马里兰州每个县的记录数量

fieldname county_city存储如下: 马里兰州弗雷德里克-弗雷德里克县-21701

//State
trim(substring(SUBSTRING_INDEX(county_city,',',-1),1,3)) as state

//city
SUBSTRING_INDEX(county_city,'-',1) as city_state

//zip code
SUBSTRING_INDEX(county_city,'-',-1) as zipcode,
但是我一直没能得到这个县!
我有一个想法,那就是我也无法得到伯爵

使用字符串函数有两个步骤:

set @s = 'Frederick,MD - Frederick County - 21701';
SELECT TRIM(SUBSTRING_INDEX(SUBSTRING(@s, LENGTH(SUBSTRING_INDEX(@s, '-' ,1)) + 2), '-', 1));
请参阅。
结果:


“我在一个字段中有一个连接的字符串”-这就是你麻烦的开始。你不应该一开始就这样存储数据。“但是我一直没能得到这个县”-你需要先找到这两个
-
的位置,我想,这可能会有所帮助。当然,整件事情会崩溃,如果你认为“分隔符”在这里出现的任何字符(逗号,减号)都出现在数据内(比如一个包含这样的负号的连字号),或者类似的字。我曾考虑将该字段分开,但从未想过会有人要求使用该信息进行统计。我已经开始添加分隔的字段,应该坚持这个想法。我上周接到请求后开始更改代码。幸运的是,马里兰州没有一个县有破折号,所以一旦我弄明白了这一点,以后就会更新查询。这里有多少记录?在MySQL之外进行聚合可能更有意义。在PHP或类似的服务器端语言中,将这个字符串分解成它的组件可能比使用MySQL的基本字符串函数处理要容易得多。仔细想想,我得到的是用户输入一个邮政编码,然后使用javascript,列表过滤并显示城市、州等(串联)。节省用户填写所有信息的时间。我可以将上面的代码用作邮政编码,并单独填写字段。使用更新查询并连接数据表和邮政编码表。邮政编码表包含单独的字段(城市、州、县、邮政编码),我宁愿纠正我没有从一开始就将它们分开的错误。这是一个新的数据库,所以我只有大约600条记录。
Frederick County