学习之路三十六:SQL知识总结 – [游标||字符串分割] – TimYang

综合技术 2013-09-25

好久没有写文章了,今天把前不久项目用到的SQL知识总结一下。



一丶字符串分割

SQL内置函数中是没有Split分割函数的,所以需要自己去实现,不多说,上代码:

CREATE FUNCTION Split(@source VARCHAR(MAX),@separator VARCHAR(10))
RETURNS @result TABLE(strValue VARCHAR(MAX))
AS
BEGIN

    DECLARE @index INT
    SET @source = RTRIM(LTRIM(@source))
    SET @index = CHARINDEX(@separator, @source)
    WHILE(@index >= 1)
    BEGIN
        INSERT @result VALUES(LEFT(@source, @index -1))
        SET @source = SUBSTRING(@source, @index+1, LEN(@source) - @index)    
        SET @index = CHARINDEX(@separator, @source)
    END
    
    IF(@source  '')
    BEGIN
        INSERT @result VALUES(@source)
    END

    RETURN
END



二丶游标

游标一般情况下都不建议使用,不过在特殊的需求下,用一下还是很好好处的,不过一定要注意性能哦,上代码:

DECLARE @temp VARCHAR(100)  --定义变量,用于读取数据源中的数据并赋给这个变量
DECLARE Source CURSOR FOR --后面是数据源

OPEN Source
FETCH NEXT FROM Source INTO @temp  --获取第一条数据
WHILE (@@FETCH_STATUS = 0)
BEGIN
    
    --TO DO
    
    FETCH NEXT FROM Source INTO @temp --获取下一条数据
    
END 

CLOSE Source   --关闭游标
DEALLOCATE Source --删除游标引用

游标就像C#中的foreach,只不过游标的语法稍微复杂点,需要花时间去记得。

循环数据源中的每一条数据并赋给一个定义的变量。

以同步至:



个人文章目录索引



您可能感兴趣的

opentracing 使用介绍 2017-10-30 系统执行一条SQL,到底慢在哪里? 如何跟踪一个分布式事务的所有行为?使用 opentracing ! opentracing 是一个标准的分布式 tracing 的协议。支持 Go, JavaScript, Java, Python, Ruby, PHP, Obje...
How do I learn #SQL for #data analysis? Step 1: This is a good starting point: SQL School Table of Contents OR, this: Learn SQL Both of th...
Unable to convert C # / SQL Server... Getting error: Failed to convert parameter value from string to a Int32 I write that code for my form and at finally when run the code and I get a...
1 Year Emsland SQL User Group Moin Moin! Unser User Group feiert 1 Jahr mit einem Sondertreffen: Am 04.09.2015 ab 15:00 Uhr finden insgesamt 4 Sessions statt. Es sind 4 Ausw&a...
Baby Moose Link Its link day here in the Moose-Pen Well seeing as my elements/fields and conditions/Where are working quite well I think it is time to move on t...