原文: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)
 
关于如何使用这种聚合,我将在后面的文章中详解。

SQL Reverse函数的更多相关文章

  1. SQL中的charindex函数与reverse函数用法

       ----------------------首先介绍charindex函数-----------------------------                                ...

  2. Sql Server函数全解<一>字符串函数

    阅读目录 1.ASCII()函数 2.CHAR()函数 3.LEFT()函数 4.RIGHT()函数 5.LTRIM()函数 6.RTRIM()函数 7.STR()函数 8.字符串逆序的函数REVER ...

  3. Sql Server函数全解(一)字符串函数

    字符串函数用于对字符和二进制字符进行各种操作 1.ASCII()函数  ASCII(character_expression)函数用于返回字符串表达式中最左侧的ASCII代码值.参数character ...

  4. SQL server函数大全

    函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如 COUNT.SUM.MIN 和MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 将值从一种数据类型转换为另一种 ...

  5. SQL SERVER 函数大全[转]

    SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...

  6. Sql server函数的学习2(游标函数、日期函数、字符串操纵函数)

    一.游标函数与变量 游标可以处理多行数据,在过程循环中一次访问一行.和基于集合的高效操作相比,这个功能对系统资源的消耗更大. 可以用一个函数和两个全局变量来管理游标操作 1.CURSOR_STATUS ...

  7. (2.16)Mysql之SQL基础——函数

    (2.16)Mysql之SQL基础——函数 关键词:mysql函数,mysql自定义函数,mysql聚合函数,mysql字符串函数,mysql数值函数 1.自定义函数 -- (1)一般形式 creat ...

  8. 【转载】SQL SERVER 函数大全

    SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...

  9. 一些SQL高级函数

    一些SQL高级函数 Posted on 2010-08-08 21:34 moss_tan_jun 阅读(311) 评论(0) 编辑 收藏 长度与分析用 datalength(Char_expr) 返 ...

随机推荐

  1. 深入理解css之absolute

    在慕课网上看到的张鑫旭大神的视频,做的笔记,以便日后翻看. 绝对定位与float 1.绝对定位和float有一样的特性,都有包裹性,和破坏性. 2.absolute和relative 如果不把他们俩放 ...

  2. canvas 基础

    1.<canvas>元素 <canvas id="tutorial" width="150" height="150"&g ...

  3. hdu 1195 Open the Lock (BFS)

    Open the Lock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  4. java 图形化界面笔记(1)

    目录 JFrame窗体......................................................................................... ...

  5. [转]Linux下阅读源代码:(g)vim+Taglist+ctags

      Linux下阅读源代码的方法很多,聪明人从标题应该就可以知道,需要(g)vim+Taglist+ctags.3者配合,真是珠联璧合,功力无限啊! vim/gvim什么是vim/gvim,如果看官连 ...

  6. tornado获取application/json类型的入参

    tornado本身是不支持直接获取json入参的,在BaseHandler中定义方法get_json_argument,以供调用 class BaseHandler(tornado.web.Reque ...

  7. Android APK瘦身方法小结

    众所周知,APP包体的大小,会影响推广的难度,用户不太喜欢下载太大的APP,同类型同等功能的APP中往往是包体小的更受用户的青睐,所以降低包体是一项非常必要的事情,也是最近公司的APP需要降低包体,所 ...

  8. number(NOIP模拟赛Round 3)

    好吧,神奇的题目.. 原题传送门 这道题目,神奇的字符单调栈.. 首先预处理出1~n个数(大家都会.) 然后塞进字符串里,输出答案(水~) 然后.. 我们需要将所有的字符存入单调栈中,然后乱搞,就可以 ...

  9. sqlmap注入一般步骤

    1. 找到注入点url2. sqlmap -u url -v 1--dbs 列出数据库或者 sqlmap -u url -v 1 --current-db 显示当前数据库3. sqlmap -u ur ...

  10. Linux内核驱动之延时---内核超时处理【转】

    转自:http://blog.chinaunix.net/uid-24219701-id-3288103.html 内核超时处理 jiffies 计数器 定时器中断由系统定时硬件以规律地间隔产生; 这 ...