原文: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. fragment中的WebView返回上一页

    public final class Text1Fm extends Fragment { static WebView mWeb; private View mContentView; privat ...

  2. Eclipse中安装svn的插件安装和使用

    先关闭Eclipse 步骤一:下载site-1.10.11.zip  将其解压 解压后目录 步骤二:创建一个文件夹svn,将解压后的文件copy到svn路径下 步骤三:打开Eclipse安装路径: e ...

  3. 史林枫:开源HtmlAgilityPack公共小类库封装 - 网页采集(爬虫)辅助解析利器【附源码+可视化工具推荐】

    做开发的,可能都做过信息采集相关的程序,史林枫也经常做一些数据采集或某些网站的业务办理自动化操作软件. 获取目标网页的信息很简单,使用网络编程,利用HttpWebResponse.HttpWebReq ...

  4. SQL查询oracle的nclob字段

    使用CONTAINS关键字查询NCLOB字段 SELECT  FORMATTED_MESSAGE    FROM     TBL_LOG WHERE     CONTAINS(FORMATTED_ME ...

  5. 洛谷 P2375 [NOI2014]动物园 解题报告

    P2375 [NOI2014]动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定 ...

  6. Tomcat学习笔记(七)

    Tomcat载入器(一) 在了解tomcat的载入器时,首先需要了解的是java的类加载部分的内容. 在java体系中,系统分为3中类型的加载器 1.启动类加载器(Bootstrap ClassLoa ...

  7. java爬虫--使用正则表达式获取网页中的email

    package com.enation.newtest; import java.io.*; import java.util.regex.*; import java.net.*; public c ...

  8. rest项目的基础返回类设计

    package com.hmy.erp.api.vo; import java.io.Serializable; import lombok.Data; /** * erp基本状态返回类 * * @a ...

  9. post传参部分数据丢失

    tomcat获取post传的参数,只接收到前半部分参数,后半部分参数没有接收到 可能的原因是: tomcat中maxParameterCount是用来限制请求中的最大参数量,默认是10000,如果超过 ...

  10. jQuery简单操作HTML的DOM

    #转载请留言联系 如果需要了解什么是HTML的dom,可以参考:http://www.w3school.com.cn/htmldom/index.asp 下面的是jQuery操作DOM,并不是Java ...