-
关于sql拆分查询的问题。5
各位大虾,请教一个sql语句:
字段: 地点 人数
-------------------------------------------
数据: 上海,北京 130
数据: 北京,南京,西安 500
数据: 西安 60
------------------------------------------
现想分别统计出 各地点 的人数总和,比如: 北京630人,西安560人等,如果[地点]字段有多个城市,每个城市人数分别有[人数]。
如何写sql
我这里有一个拆分通用函数,但是只能是拆分一个串的。
--SQL中字符串拆分通用函数
CREATE FUNCTION uf_StrSplit
(@origStr varchar(7000), --待拆分的字符串
@markStr varchar(100)) --拆分标记,如','
RETURNS @splittable table
(
str_id varchar(4000) NOT NULL, --编号ID
string varchar(2000) NOT NULL --拆分后的字符串
)
AS
BEGIN
declare @strlen int,@postion int,@start int,@sublen int,@TEMPstr varchar(200),@TEMPid int
SELECT @strlen=LEN(@origStr),@start=1,@sublen=0,@postion=1,@TEMPstr='',@TEMPid=0
if(RIGHT(@origStr,1)<>@markStr ) --返回字符串中从右边开始指定个数的字符。
begin
set @origStr = @origStr + @markStr
end
WHILE((@postion<=@strlen) and (@postion !=0))
BEGIN
IF(CHARINDEX(@markStr,@origStr,@postion)!=0)
BEGIN
SET @sublen=CHARINDEX(@markStr,@origStr,@postion)-@postion; --返回字符串中指定表达式的起始位置。
END
ELSE
BEGIN
SET @sublen=@strlen-@postion+1;
END
IF(@postion<=@strlen)
BEGIN
SET @TEMPid=@TEMPid+1;
SET @TEMPstr=SUBSTRING(@origStr,@postion,@sublen);
INSERT INTO @splittable(str_id,string) values(@TEMPid,@TEMPstr)
IF(CHARINDEX(@markStr,@origStr,@postion)!=0)
BEGIN
SET @postion=CHARINDEX(@markStr,@origStr,@postion)+1
END
ELSE
BEGIN
SET @postion=@postion+1
END
END
END
RETURN
END2008年6月10日 18:02
目前还没有答案
相关推荐
SQLDumpSplitter就是用来解决这个问题的,它能够将大的SQL dump文件拆分成更小、更易管理的部分。 该工具的核心功能在于其智能地分析SQL文件的结构,识别INSERT语句和其他数据库操作,并按照这些语句进行拆分。这样...
### SQL拆分字符串知识点详解 在SQL Server中,经常需要对字符串进行操作,例如分割、合并等。本文将详细介绍如何使用SQL Server中的存储过程来实现字符串的拆分,并通过一个具体的例子来展示整个过程。 #### SQL...
SQLDumpSplitter是一款实用工具,专门用于解决在MySQL数据库环境中遇到的大SQL脚本文件拆分问题。当一个SQL脚本文件过大,导致导入数据库时出现性能瓶颈或超出系统限制时,这款工具就能派上用场。它能将一个大的SQL ...
创建函数,拆分字符串
SQL字符串拆分函数,可拆分任何格式的字符串,只需传入待拆分字符串及拆分参数即可
这种情况下,即使该SQL语句可以在SQL Server的查询分析器中成功运行,但在VB程序中却会因为长度限制而失败。为了克服这一限制,本文介绍了一个专门用于将超长SQL语句拆分为多个较小SQL语句的方法。 #### 核心功能...
根据提供的信息,我们可以详细探讨如何在SQL Server 2000环境中实现数据拆分功能。具体来说,就是如何将一个包含逗号分隔值的字段拆分成多行记录。 ### SQL Server 2000 数据拆分技术 #### 1. **背景与目标** - *...
SQL数据库分割拆分工具,体积小,非常好用,可以把大SQL文件自动分割成不同大小文件,方便导入数据库,文件大小可以自己设定,一般虚拟主机数据库导入限制2-8MB, 几百MB数据库没法一次导入,可以用这个分割成NN个,...
自己写了一个function 用于处理拆分时的逻辑运算,性能比网上找的快好几倍, 代码和说明:https://blog.csdn.net/jimyao37/article/details/123522885
在SQL Server中,查询两个日期之间的所有月份是一个常见的需求,特别是在数据分析、报表生成或时间序列分析等场景。本文将详细讲解如何使用SQL Server实现这一功能,以满足上述标题和描述中的要求。 首先,我们需要...
这些文件可能包含数千甚至上百万条SQL语句,导致一次性加载或恢复时面临效率低下、资源消耗大等问题。为了解决这一问题,"SQLDumpSplitter"工具应运而生。这个工具专门设计用于将大型的MySQL转储文件拆分成多个小...
今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL...语句不算复杂,只是执行比较慢,下面是关于这SQL语句的一些信息: –1.SQL执行203条数据 –2.耗时12秒 –3.so_order表的fid字段是字符串集合, –由1-2个
- **解决方案**:对于这种需求,可以尝试将查询拆分成多个子查询或使用其他聚合函数来达到目的。 #### 2. 使用`LEFT SEMI JOIN`来代替`IN`/`EXISTS`关键字 - **背景**:Hive不支持标准SQL中的`IN`和`EXISTS`关键字...
综上所述,"按行拆分文本或SQL脚本文件"是一个涉及文件处理、流式读写、内存管理以及性能优化的IT问题。通过理解和运用这些知识点,开发者可以构建出高效且可靠的文件拆分工具,解决在大数据处理中遇到的实际问题。
- **表分区**:对于大数据量的表,可以采用表分区技术将其拆分成较小的部分,以便于并行处理和提高查询速度。 - **索引分区**:与表分区类似,也可以对索引进行分区以提高索引的访问效率。 ##### 4. 调整Oracle参数...
在这种情况下,可以尝试将这些子句拆分为多个独立的查询,然后使用`UNION`合并结果,以便每个查询都能利用索引,提高效率。例如,避免使用`select * from table where no in ('0', '1')`,改为两个独立的`SELECT`...
主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...
总之,这个压缩包提供的工具或教程为SQL Server用户解决了一项具体而常见的问题,即如何灵活地按特殊字符拆分字符串。通过学习和使用这个资源,用户可以提高在数据库操作中的效率,减少手动处理字符串的繁琐工作。...
此标题指明了文章的主要内容是关于如何在SQL Server 2000环境中实现字符串的拆分操作。字符串拆分通常是指将一个较长的字符串按照某种规则(如特定字符)分割成多个子字符串的过程。 #### 描述理解: 描述中给出了...
MySQL数据库在处理大型数据文件时,尤其是SQL dump文件,可能会遇到导入效率低或者超过系统限制的问题。在这种情况下,使用特定的工具,如"SQLDumpSplitter",可以帮助我们有效地拆分大体积的SQL备份文件,使其能更...