SQL Reverse函数

简介: 原文:SQL Reverse函数Sql sever里面有个自带的reverse函数,这个函数的主要功能是把一个字符产反转。比如对于:select REVERSE('hello,world')将得到如下的输出:dlrow,olleh现在我的问题是,不使用这个函数而使一个字符串反转。
原文: SQL Reverse函数

Sql sever里面有个自带的reverse函数,这个函数的主要功能是把一个字符产反转。比如对于:

select REVERSE('hello,world')
将得到如下的输出:dlrow,olleh
现在我的问题是,不使用这个函数而使一个字符串反转。
我找出来一种算法,第一种是使用递归,先找出最后一个字符,然后递归。最好的方式就是使用cte了。代码如下:
;with cte1(seq, vv) as(
        select 1, 'fine' union all
        select 2, 'great' union all
        select 3, 'adfinioqweiweio' union all
        select 5, 'hello,world' union all
        select 4, 'piasdf'),

cte2(seq, vv, vvs, len) as(
        select seq, vv, cast(substring(vv, len(vv), 1) as varchar(200)), len(vv)
        from cte1
)

,cte3(seq, vv, vvs, len) as(
        select *
        from cte2

        union all

        select c2.seq, c3.vv, cast(c3.vvs + substring(c3.vv, c3.len-1, 1) as varchar(200)), c3.len-1
        from cte2 c2 join cte3 c3 on
        c2.seq = c3.seq and c3.len <= c2.len and c3.len > 1
)

select * from cte3
where len = 1
order by seq, len
另外一种方式是,我先得到所有的单个字符,然后把这些字符从后往前聚合起来。代码如下:
;with cte1(id, data) as
(
        select 1, 'Jacob' union all
        select 2, 'Sebastn' union all
        select 3, 'Hello,world'
)

,Numbers AS (
    SELECT *, SUBSTRING(data, n, 1) as sub
    FROM cte1 join dbo.Number
    on N <= len(data)
)

select *
from cte1 c1 cross apply(
        select substring(sub, 1, len(sub))
        from Numbers nm
        where nm.id = c1.id
        order by n desc
        for xml path('')
) as c(p)
 
关于如何使用这种聚合,我将在后面的文章中详解。
目录
相关文章
|
2月前
|
SQL 索引
在 SQL Server 中使用 STRING_AGG 函数
【8月更文挑战第5天】
640 2
在 SQL Server 中使用 STRING_AGG 函数
|
2月前
|
SQL 数据库
|
1月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
2月前
|
SQL 数据采集 数据处理
如何在 SQL Server 中使用 LEN 函数
【8月更文挑战第9天】
115 1
如何在 SQL Server 中使用 LEN 函数
|
2月前
|
SQL 数据格式
在 SQL Server 中使用 STR 函数
【8月更文挑战第5天】
175 3
在 SQL Server 中使用 STR 函数
|
2月前
|
SQL 数据处理 数据库
SQL中的函数有哪些类型
【8月更文挑战第20天】SQL中的函数有哪些类型
20 1
|
2月前
|
SQL 监控 索引
如何在 SQL Server 中使用 `PATINDEX` 函数
【8月更文挑战第8天】
258 9
|
2月前
|
SQL 关系型数据库 MySQL
如何在 SQL Server 中使用 `REPLACE` 函数
【8月更文挑战第8天】
519 9
|
2月前
|
SQL 数据处理 数据库
|
2月前
|
SQL Oracle 关系型数据库
SQL 中的大小写处理函数详解
【8月更文挑战第31天】
55 0