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 中的 MIN 和 MAX 以及常见函数详解及示例演示
SQL中的MIN()函数和MAX()函数用于查找所选列的最小值和最大值,分别。以下是它们的用法和示例:
160 0
|
2天前
T-sql 高级查询( 5*函数 联接 分组 子查询)
T-sql 高级查询( 5*函数 联接 分组 子查询)
|
2天前
|
SQL 关系型数据库 MySQL
MYSQL数字函数实操宝典:场景化SQL语句一网打尽
本文作为MYSQL数字函数实操宝典,通过丰富的场景化SQL语句实例,一网打尽了MYSQL中常用的数字函数。我们深入探讨了ROUND函数在金额四舍五入、评分计算等场景的应用,展现了其在确保数据准确性和展示规范性方面的重要性。同时,FLOOR函数在分页处理、价格计算等实际案例中的灵活运用,也体现了其在向下取整方面的优势。此外,CEIL函数在分页处理、费用计算等方面的应用案例,充分展示了其向上取整的功能特点。这些实用案例不仅有助于读者更好地理解MYSQL数字函数的工作原理,更为开发者在实际开发中提供了有价值的参考
46 8
|
2天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
2天前
|
SQL 存储 Apache
在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
【2月更文挑战第16天】在 Apache Flink SQL 中,并没有内置的 GROUP_CONCAT 函数
219 2
|
2天前
|
SQL 存储
SQL Server基本函数
SQL Server基本函数
|
2天前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
38 0
|
2天前
|
SQL Perl
PL/SQL的函数和包
PL/SQL的函数和包
30 1