`
javababy1
  • 浏览: 1202811 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQL2005下字符串字段内的字符排序

阅读更多

SQL2005下字符串字段内的字符排序

今天和梁翁在群里聊天,小家伙突然抛出一个有意思的问题,那就是字符串字段内的字符串排序问题,比如有列col,有数据'RDGS' ,要求输出为'DGRS'

当时我本想和梁翁讨论一种思路,那山羊闹着要聊天,不许讨论技术问题,所以这夜深时俺整理一下,与大家分享。

-----------------------------------------------------------------------

-- Author: happyflystone

-- Date : 2009-01-17 22:56:11

-- Ver: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86)

-- Apr 14 2006 01:12:25

-- Copyright (c) 1988-2005 Microsoft Corporation

-- Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)

--

----------------------------------------------------------------------

--测试数据

DECLARE @T TABLE(COL VARCHAR(10))

INSERT @T SELECT 'WEFSA'

INSERT @T SELECT 'DFSA'

INSERT @T SELECT 'DQWF'

--数据生成

;

WITH T

AS

(

SELECT top 26 ROW_NUMBER() OVER (ORDER BY ID) AS n

FROM SYS.SYSOBJECTS

),

T2

AS

(

SELECT col,CHAR(64+N) AS M,N

FROM @T JOIN T

ON CHARINDEX(CHAR(64+N),COL) > 0

)

SELECT

COL,

replace(

(SELECT M as [data()] FROM T2 WHERE COL = T3.COL ORDER BY N FOR XML PATH('')

),' ','') AS NEWCOL

FROM @T T3

--结果

/*

COL NEWCOL

---------- --------

WEFSA AEFSW

DFSA ADFS

DQWF DFQW

(3 行受影响)

*/

--附录:(P梁写的,也就是梁翁了,大家自己比吧)

;WITH Numbers AS

(

SELECT TOP(20)

ROW_NUMBER() OVER(ORDER BY [object_id]) AS ID

FROM sys.objects

),

Liang AS

(

SELECT

A.col,

B.ID,

SUBSTRING(A.col,B.ID,1) AS v

FROM @t AS A

JOIN Numbers AS B

ON SUBSTRING(A.col,B.ID,1)<>''

)

SELECT

col,

REPLACE(

(

SELECT

v AS [data()]

FROM Liang

WHERE col=A.col

ORDER BY v

FOR XML PATH('')

),' ','')

FROM @t AS A

分享到:
评论

相关推荐

    sqlserver中根据某个字符切割字符串函数

    sqlserver中根据某个字符切割字符串函数,比如根据逗号切割字符串,结果返回的是一个表值函数,这个函数返回结果字段包含Id和Value,Id为序号,Value为切割后的值

    sql server拼接字符串和拼接一列的值

    sql server拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。

    字符串合计(SQL SUM)

    ms sql server 字符合计,类似sum函数的功能,不过是针对字符型!

    分组字符合并SQL语句 按某字段合并字符串之一(简单合并)

    标题:按某字段合并字符串之一(简单合并) 描述:将如下形式的数据按id字段合并value字段。 id value —– —— 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到结果: id value —— ———– 1 aa,bb 2 aaa,bbb,...

    字符串分割的字符串数量 SQL

    在实际应用场景中,有时会遇到存储了多个值的字符串字段,例如,一个包含多个电子邮件地址的字符串字段,这些地址之间可能用逗号(`,`)或分号(`;`)等符号分隔。为了方便后续的数据分析或操作,需要先统计出这样的...

    SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串

    SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串SQL截取以逗号分隔的字符串

    取字符串中字符位置

    本文将围绕“取字符串中字符位置”这一主题展开,深入探讨在SQL Server 2000及后续版本如SQL Server 2005中,如何有效地获取字符串中某一字符的位置,以及基于此进行更复杂的数据处理。 ### SQL Server中的字符串...

    sqlserver 字符串分割、包含、匹配

    2、按指定符号分割字符串,返回“分割后指定索引的第几个元素”的值,象数组一样方便 3、检查一个元素是否在数组中,返回1或0 4、检查一个元素是否与数组中的相匹配,并返回相匹配的数组的值。参数值为0表示全模糊...

    sql2000字符串分割,字符串拆分

    它首先使用`substring()`函数提取从`id`位置开始到下一个逗号之间的子字符串,然后通过`charindex()`函数找到逗号的位置,并计算出子字符串的长度。最后通过`where`子句筛选出所有符合条件(即当前位置为逗号)的...

    SQL字符串分割

    ### SQL字符串分割技术详解 在数据库管理与查询中,经常遇到需要将一个包含多个值的字符串字段分割成多个单独字段的情况。这种需求在处理CSV数据、解析复合字段或执行复杂的数据清洗任务时尤为常见。本文将详细介绍...

    Sql批量替换字符串的工具

    标题中的“Sql批量替换字符串的工具”指的是一个用于SQL数据库中进行大量文本字符串替换的程序。这类工具在数据库管理中非常实用,特别是在处理大量数据时需要统一修改特定字符串的情况。例如,如果你有一个数据库表...

    截取用,分割的字符串中的第n个字符串 SQL

    根据给定的信息,本文将详细解释如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串。此需求通常应用于数据处理与分析场景中,尤其在处理半结构化或非结构化的文本数据时非常有用。 ### 核心知识点解析 ...

    sql自定义函数分组合并字符串列

    sql自定义函数,用于合并字符串列,可以在分组的情况下对varchar类型的字段合并

    sql 多行合并某一列字符串拼接的示例

    ### SQL字符串拼接的原理 在SQL中,字符串拼接是指将多个字符串值连接成一个单一的字符串。不同的数据库系统提供了不同的函数或操作符来实现这一功能。例如,在SQL Server中,可以使用`+`操作符或`CONCAT()`函数;...

    SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx

    SQL 字符串分割函数实现多行数据转换 在数据库中,经常会遇到将一个字段中的特殊字符分割的字符串转换成多行数据的情况。这是一个常见的需求,但是网上提供的解决方案往往非常复杂,难以理解和实现。为了解决这个...

    oracle通过sql实现字符串转数字oracle函数

    最后,当我们谈论“字符串的最终排序”时,使用转换后的数字字段进行排序将更准确,因为字符串按照字典顺序排序,而数字则按照数值大小排序。例如: ```sql SELECT * FROM your_table ORDER BY TO_NUMBER(str_...

    [sql server]SQL Server2005杂谈(4):在SQL Server2005中按列连接字符串的三种方法.doc

    在SQL Server 2005中,连接字符串是一项常见的任务,尤其在处理包含多个值的列时。在本文中,我们将探讨三种不同的方法来按列连接字符串,这些方法适用于已经存在的表结构,无需进行重大改动。 首先,我们可以考虑...

    ABAP字符串SQL Functions语法总结

    接下来,我们将深入探讨几种常用的ABAP SQL字符串函数: 1. `CONCAT(arg1, arg2)`: 这个函数用于连接两个字符串`arg1`和`arg2`。它会忽略尾部空格,并且结果的最大长度为1333个字符。例如: ```abap SELECT matnr,...

    Sqlserver长字符串拆分为多行 高效

    自己写了一个function 用于处理拆分时的逻辑运算,性能比网上找的快好几倍, 代码和说明:https://blog.csdn.net/jimyao37/article/details/123522885

    SQL 字符串自动补零

    sqlServer中,给字符串开头或结尾自动补零,可以控制补几个零,共三种方法。

Global site tag (gtag.js) - Google Analytics