1. sql中怎么把字符串根据逗号拆分
IF(OBJECT_ID('TA') IS NOT NULL) DROP TABLE TA
CREATE TABLE TA(id INT,[value] VARCHAR(100), class VARCHAR(10))
INSERT INTO TA(id,[value],class)
SELECT 1,'3,2,4,5','no' UNION ALL
SELECT 2,'5,1,1+2','yes'
--查询结果
SELECT T.id
,SUBSTRING(T.[value],R.number,CHARINDEX(',',T.[value]+',',R.number)-R.number) AS value
,T.class
,ROW_NUMBER() OVER (PARTITION BY T.id ORDER BY T.id) AS code
FROM TA AS T
JOIN (
SELECT TOP 10 number FROM [master].dbo.spt_values
WHERE [type]='P' ORDER BY number)AS R ON (CHARINDEX(',',','+T.[value],R.number)=R.number)
2. SQL语句怎么实现
标题1
姓名1
班级1
你一条记录的三个内容是靠什么分隔的,换行符还是空格,还是不确定?
如果是换行符或者空格的个数是一定的话可以用instr函数来弄,如果不确定的话就不好弄了
3. 谁能帮忙写出这个SQL脚本,需要判断拆解原数据的日期或份数,得出结果。能解决再加分! 详细内容如下:
结果表中投递是怎么取的 还有 份数为1 的几条数据的时间怎么取的 都和上表不一样
如果一样的话用递归就能做出来
4. 数据库SQL Server 问题求助
1、首先,这条sql 使用了(not exists),这条sql思路大体是这样的:
某个order,取名为R, 如果10308这个order下某个订单商品不在R订单下的订单商品中,那么R这个order就不符合条件;
2、sql拆解分析:首先明确not exists 的意思是:其后没有数据返回,那么被select的数据才被加入到结果集中;
1)第一个not exists 和第二个not exists之间的sql:
"select 1 from OrderItems” a where a.OrderID=10308"
这个查询的意思是:查询出订单为10308的所有订单商品;其后面的not exists就是对这个结果集的过滤;
2)第二个not exists 后面的sql:
"select 1 from OrderItems b where p.OrderID=b.OrderID and a.ProceID=b.ProctID"
这个查询的意思是:10308这个订单的订单商品是否存在与p这个订单中的订单商品中;
3)将前两步中的sql结合起来:
“select 1 from OrderItems a where a.OrderID=10308
and not exists
(select 1 from OrderItems b where p.OrderID=b.OrderID and a.ProceID=b.ProceID)”
这个sql的意思是:在10308这个订单的所有订单商品中,是否存在某个商品不再p订单的订单商品中;
4)最后对Orders的筛选sql:
“select * from orders p where not exists (第三步的查询结果)”
第三步中,如果存在那种情况,那么 第三步返回的数据是1,所以这条order就被过滤掉了,不会添加到结果集中;
如果存在那种情况,那么 第三步没有返回数据,所以这条order就会添加到结果集中;
*能力有限,只能讲到这种程度,如有不妥之处,海涵、见谅,兄弟;欢迎指正!
5. sql语句太长,能否拆开执行
简单的回答,到目前为止,没有能支持SQL语句拼接的数据库管理软件,也应该没这个必要。
下面是一些常识,有耐心可以看一下。
1、原则上,MS SQL SERVER对SQL条件语句的长度不作限制,起码当前没有人有实际的单条语句没法执行完成的报道,应该几千个字符以内的单条SQL语句都能正常的在MS SQL附带的“SQL Server Management Studio”或“企业管理器”中执行,要不,你试试,也许你就是第一个发现问题的人。
2、如果是编程,使用某些编程软件向SQL Server发送SQL语句的话,受限于编程环境下,字符串的长度或别的因素,可能会有某些不同,如果是那样的话,最常见的做法是将多条SQL语句做成存储过程,放在SQL Server数据库中,程序只需要发送初始条件进行存储过程的调用即可。
3、也就是说,复杂的SQL语句,绝大多数专业工程人员一般都不会用通过客户端直接发向SQL 服务器的方式去执行。如果只是临时的要进行一些SQL数据库的操作,也可以直接在SQL相应的管理工具中做。
6. 谁能帮我拆开这句SQL语句呢
可以说已经没法猜了,在通过变量拆会更不易看懂。这个sql其实就是套用使用其他的sql执行结果而已,你可以怎么理解
set rs=conn.execute("select *,aaaa as children, bbbb as parent from tree T where pid="$id);
其中aaaa为tree表中pid=T.id的记录总数
bbbb为tree表中id="&id&"的记录的pid的值
7. 一个Java项目。在sql里,我将一个case when 语句拆解成数个select 然后union all之后,页面上就报
格式说明符没有相应的参数,或者参数索引引用了不存在的参数
8. sql查询里 怎么拆分字符串(按“/”拆分)
先建立一个自定义函数,之个函数非常有用,建议收入自已的数据库
CREATE FUNCTION mysplit--将以某分隔符分段的字串,按指定的顺序号提取子串:
(@strnvarchar(2000),--源字串
@snint,--提取序号
@Delivarchar(1)--分隔符
)
RETURNSvarchar(100)
AS
BEGIN
declare@firstint,@lastint,@resultvarchar(1000),@sn0int
select@sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,1)
while@sn0!=@sn
begin
select@sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
if@last-@first-1<0
set@result=''
else
SET@RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)
RETURN(@RESULT)
END
查询方法:
DECLARE@AVARCHAR(100),@BVARCHAR(100),@CVARCHAR(100)
SELECT
@A=DBO.MYSPLIT('A|B|C',1,'|'),
@B=DBO.MYSPLIT('A|B|C',2,'|'),
@C=DBO.MYSPLIT('A|B|C',3,'|')
SELECT@A,@B,@C
9. PL/SQL 拆解字符串语句
我提供一个拆分字符串的通用函数给你,你再写这种SQL:
1、先建立一个包,定义数组类型:
CREATE OR REPLACE PACKAGE pkg_string is
-- Purpose : 字符串处理
-- Public type declarations
TYPE StringArray IS VARRAY(2000) OF VARCHAR2(2000);
END pkg_string;
2、拆分字符串的通用函数:
CREATE OR REPLACE FUNCTION fun_ParseToArray(
a_SourceString IN VARCHAR2, --源字符串
a_Delimiter IN VARCHAR2 --拆分的分隔符
) RETURN pkg_string.StringArray IS
-- ********************************************************
-- 根据分隔符拆分字符串为数组
-- ********************************************************
v_Result pkg_string.StringArray; --数组
iCount INTEGER;
iBegin INTEGER;
sValue VARCHAR2(2000);
sSplitString VARCHAR2(2000);
BEGIN
--检查参数
IF a_SourceString IS NULL OR a_Delimiter IS NULL THEN
RETURN(v_Result);
END IF;
IF a_SourceString = '' THEN
RETURN(v_Result);
END IF;
--初始化数组
v_Result := pkg_string.StringArray();
--Only one entry was found
IF instr(a_SourceString,a_Delimiter) = 0 THEN
-- 数组加1维
v_Result.extend();
-- 将数据存入数组
v_Result(1) := a_SourceString;
RETURN(v_Result);
END IF;
iCount := 0;
sSplitString := a_SourceString;
LOOP
iBegin := INSTR(sSplitString,a_Delimiter);
EXIT WHEN iBegin < 1;
sValue := Substr(sSplitString,1,iBegin - 1);
sSplitString := SubStr(sSplitString,iBegin + 1);
-- 计数器加1
iCount := iCount + 1;
-- 数组加1维
v_Result.extend();
-- 将数据存入数组
v_Result(iCount) := sValue;
END LOOP;
--Set last entry
sSplitString := SubStr(sSplitString, iBegin);
--Update array and counter if necessary
IF Length(sSplitString) > 0 THEN
-- 计数器加1
iCount := iCount + 1;
-- 数组加1维
v_Result.extend();
-- 将数据存入数组
v_Result(iCount) := sSplitString;
END IF;
RETURN(v_Result);
EXCEPTION
WHEN others THEN
return v_Result ;
END fun_ParseToArray;
3、组成SQL
...
vs_row pkg_string.StringArray;
vs_column pkg_string.StringArray;
...
vs_row := fun_ParseToArray(你的一列数据,'#');
--再用for循环拆分vs_row的列:
vs_column(j) := fun_ParseToArray(vs_row(i),'|');
再把拆分出来的数据入表
10. Excel 2010 SQL完全应用的阅读指南
本书共包括11章,涉及了SQL在Excel中应用的各个方面。其中,第1章为基础入门,第2至7章为SQL的语言结构应用的疑难问题及解决方案,第8章为子查询,第9章为SQL与数据透视表组合的应用,第10章为SQL与VBA的组合应用。各章根据所涉及知识点的不同,精心设计了数十个案例,并为读者准备了相应的思考题和练习题。第11章为综合应用,讲述了运用SQL解决报表分析及构建综合查询系统的思路及方法。
各章节的内容简介如下:
第1章 SQL基础入门
本章主要介绍Excel下的SQL操作环境、SQL语句的基础概念以及SQL查询入门,引导读者学习及掌握Excel中的SQL语言的运用,并且能编写出最基本的SQL语句。
第2章 SQL运算符使用
本章主要介绍Excel SQL中比较运算符、逻辑运算符、连接运算符和算术运算符的使用方法,引导读者在进行SQL查询时随心所欲地根据单个或多个条件找出所需要的特定数据。
第3章 SQL常见函数使用
本章主要介绍SQL查询中可能用到的基本函数,主要涉及到字符串函数、算术函数、转换函数及其他函数,帮助读者进一步加深对SQL语句的认识并可运用SQL基本函数解决一些实际工作中遇到的问题。
第4章 SQL日期和时间函数使用
本章主要介绍SQL中日期和时间函数的使用,熟练掌握日期和时间函数的使用,可以方便地按月、年汇总和查询,还可以查询和汇总某特殊时间段的数据,或者可以获取某些特殊的日期。
第5章 SQL排序查询
本章主要介绍SQL排序查询,利用排序查询的技巧可以实现数据的顺序排列,也可以找出指定位置的记录,得到记录的排名等。
第6章 聚合函数与分组统计
本章主要介绍Excel中数据求和、计数、求均值、GROUP BY分组统计等方面的知识,解答用户在工作中最常见的SQL疑难问题,引导读者轻松掌握SQL的统计汇总技术。
第7章 连接查询
本章主要讨论内连接、外连接、交叉连接及自连接等方面的疑难问题,引导用户轻松地掌握SQL中最常见的多表连接方面的知识。
第8章 子查询
本章通过对简单子查询、复杂子查询等经典案例的讲解,帮助读者深入了解子查询的知识。
第9章 SQL与数据透视表
本章首先介绍数据透视表的一些常用的操作,让用户对数据透视表有了初步的印象,然后通过相关例子来介绍SQL与数据透视表在日常工作中的应用,向用户展示双剑结合的威力。
第10章 SQL和VBA
本章大部分示例以Access作为数据库,来展示Excel如何通过VBA来利用SQL语句进行数据查询、修改等批量处理。
第11章 综合应用
本章通过对日常工作中的报表分析案例、SQL综合查询通用系统的分模块设计案例的讲解,将各章中常遇到的技巧进行组合,为读者在日常工作中遇到的实际问题进行分析拆解、逐步实现所需要的效果,让SQL语言真正应用到工作中去。
本书约定
为了熟悉本书对鼠标操作、键盘指令等描述方式,从而更顺畅地阅读本书,您有必要了解以下内容:
菜单
本书中表示连续多个菜单指令时,使用右箭头“→”进行连接,例如:单击“文件”选项卡→“选项”→“公式”,表示依次单击“文件”选项卡的“选项”按钮,在弹出的“Excel 选项”对话框中单击“公式”选项卡。
鼠标
本书中表示鼠标操作时,均使用标准的表示方法。其中“指向”表示将鼠标指针移到对象之上,且不单击任何按钮;而“单击”特指利用鼠标左键单击目标;“右键单击”表示利用鼠标的右键单击对象;“双击”表示快速按下鼠标左键两次;“拖放”则表示按下鼠标左键不松开的状态下拖动鼠标,拖到目标区域后再放开鼠标左键。
键盘
本书中表示按键时使用尖括号“【】”号包含,例如“按【Ctrl+Shift+Enter】组合键”表示同时按下键盘上的Ctrl键、Shift键和Enter键。其他按键的表示方法相同,如果需要特殊操作方法,会在相关内容中详细说明。
代码
本书的SQL代码全部使用大写,例如:SELECT SUM(销售量) AS 总销售量,SUM(销售额) AS 总销售额FROM [空调销售表$]。在讲解SQL语法时,参数尽量使用小写,例如VAR (expr)。
本书特点
本书为市场上第一本在Excel中完全应用SQL语言的Excel书籍,文体结构新颖,案例贴近实际,讲解深入透彻,表现为以下几个方面:
场景式提问
本书从成千上万网友提问中精心归纳、提炼出各类问题,并还原为贴近真实的求助语言及案例,方便读者搜寻与实际工作相似问题。
增强式目录
本书总体章节划分以“基础理论→分类应用→综合实战”为主线,将VBA的主要知识点和经典解决方案设计到每个疑难的案例中,并采用“疑难”加“知识点”的特色目录索引,方便读者根据需要翻阅和查找。
开创式结构
本书案例中的“解决方案”环节是对问题的思路解说,结合“操作方法”环节中的步骤让人更容易理解。“原理分析”环节则主要解释所使用代码的工作原理。“知识扩展”环节包括与案例相关的知识点补充,可拓展读者的视野,同时也有利于理解案例本身的解决思路。
学习方法
本书旨在让读者掌握运用SQL语句的基本操作、方法和技巧,用以解决实际工作中的疑难问题,以及对同类的问题提供解决思路。
书中各章节按由易到难的方式组织,但章节之间是相互独立的,可以从任意章节开始学习,不需要遵循由前至后的顺序阅读。
本书配套有示例文件光盘,读者必须把光盘的文件放置在D盘,然后边看书边操作,只有通过实践和不断尝试,才能真正地掌握和灵活地运用本书中的SQL语句的知识,也许可以写出比本书作者更好的SQL语句。