FOR XML PATH实现小九九

数据库环境:SQL SERVER2008R2

今天我们用SQL实现一下九九乘法表的功能。

实现的逻辑不是很复杂,难点在于怎么把想要的内容从同一列里头拼接到同一行上。

在这里,我们用到了FOR XML PATH,FOR XML的用法,可以到MSDN去看,这里就不细讲了。

/*数据准备,生成自然数1-9*/
WITH    x0
          AS ( SELECT   id
               FROM     t100
               WHERE    id <= 9
             ),/*生成所有可能的乘法组合*/
        x1
          AS ( SELECT   a.id AS aid ,
                        b.id AS bid ,
                        CONVERT(VARCHAR(1), a.id) + ‘ * ‘
                        + CONVERT(VARCHAR(1), b.id) + ‘ = ‘
                        + CONVERT(VARCHAR(2), a.id * b.id) AS result
               FROM     x0 a ,
                        x0 b
               WHERE    a.id <= b.id
             )
    /*把被乘数相同的转到同一行上*/
    SELECT  result
    FROM    ( SELECT    bid ,
                        ( SELECT    ‘  ‘ + result AS [text()]
                          FROM      x1 AS t2
                          WHERE     t2.bid = t1.bid
                        FOR
                          XML PATH(‘‘)
                        ) AS result
              FROM      x1 AS t1
              GROUP BY  bid
            ) t;    

相关的说明已经在代码里进行注释。

(本文完)

时间: 2024-11-04 15:22:48

FOR XML PATH实现小九九的相关文章

灵活运用 SQL SERVER FOR XML PATH

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主. 一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下: 接下来我们来看应用FOR XML PATH的查询结果语句如下: SELECT * FROM @hobby FO

SQL FOR XML PATH 和 Stuff 用法

sql stuff 用法 1.作用 删除指定长度的字符,并在指定的起点处插入另一组字符. 2.语法 STUFF ( character_expression , start , length ,character_expression ) 3.示例 以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串 SELECT STUFF('abcdef', 2, 3, 'ijklmn')GO 下面是结果集 a

行转列(FOR XML PATH)

SELECT (SELECT ac.ColName+',' FROM T1 AS ac FOR XML PATH('')) AS ColName, (SELECT ac.colTitle+',' FROM T1 AS ac FOR XML PATH('')) AS colTitle 行转列(FOR XML PATH),布布扣,bubuko.com

for xml path

在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据 示例:

使用for xml path 分组查询

SELECT OLevel, WorkOrgID, WorkOrgName, PlanNum, PlanFinishNum, PlanUnFinishNum, PlanCanceledNum, PlanChangedNum, OrtherNum, PlanTime, ActualTime, RIGHT(PlanIDs,LEN(PlanIDs)-1) AS PlanIDs FROM (SELECT ( CASE MIN(Parent) WHEN 'E13744A1-7E2C-42E8-8E7B-4

sql FOR XML PATH(&#39;&#39;)

alter function test() Returns nvarchar(max) As Begin Declare @avg nvarchar(max) Declare @str nvarchar(max) Set @str=( Select ','+yuanshidanhao from Aj_Jibenxinxi Where convert(nvarchar(max),id) in (1,2,6) FOR XML PATH('') ) Return @str End sql FOR XM

SqlServer——for xml path

for xml path 就是将 sql 查询出来的内容以XML的格式显示出来.参考网站MSDN:将 PATH 模式与 FOR XML 一起使用. 先创建测试用的表格: create table SZQCSBJ ( 省 varchar(100), 市 varchar(100), 县 varchar(100) ); insert into SZQCSBJ values('山东' ,'潍坊' ,'安丘' ); insert into SZQCSBJ values('山东' ,'潍坊','寿光' );

初识FOR XML PATH

今天公司升级考试(我打酱油的熟悉下),结果第一题就熄火了,大概是这样的: 一张学生表,列分别为(stuID,sName,hobby),stuID代表学生编号,sName代表学生姓名,hobby列存学生的爱好 要求是查询学生表,显示所有学生的爱好的结果集 我在那搞了半天没搞出来,过后问了下同事,他说用FOR XML PATH,搞了下出来了 SELECT B.sName,LEFT(StuList,LEN(StuList)-1) as hobby FROM ( SELECT sName, (SELEC

SQL SERVER FOR XML PATH

转自:王波洋 (PS:对当前的博客进行了阅读,感觉不错,本来计划自己写一下,后来实在是时间不充裕并且博主写的不错,故转过来并稍微修正下) FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作. 一.FOR XML PATH 简单介绍           那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱好,表结构如下: