s?q?l?s?e?r?v?e?r?结?果?集?转?为?字?符?串

比如有语句select username from Employee 返回结果是: username 张三 李四 王五 
怎么输出一个字符串类似: 张三,李四,王五 答: 
declare @s varchar(1000) 
select @s=isnull(@s+‘,‘,‘‘)+username from Employee select @s as username

--> 生成测试数据表:Employee   
IF NOT OBJECT_ID(‘[Employee]‘) IS NULL     DROP TABLE [Employee] GO 
CREATE TABLE [Employee]([username] NVARCHAR(10)) INSERT [Employee] 
SELECT N‘张三‘ UNION ALL SELECT N‘李四‘ UNION ALL SELECT N‘王五‘ GO 
--SELECT * FROM [Employee]   
-->SQL查询如下:   
DECLARE @S VARCHAR(100) 
SELECT @S=ISNULL(@S+‘,‘,‘‘)+[username] FROM [Employee]

Zuolo: 上面的查询语句不能添加 order by进行排序,否则只能得到最后一条记录 
PRINT @S --RESULT: 
--张三,李四,王五  另外一个  
请教各位大大?如何将 
‘01,02,03,04‘ 转换为1列的结果集 01 02 03 04 
 
/* 拆分字符串    * */  
--拆分单列+序号 
--方法一:利用数字辅助表 
if object_id(‘fn_SplitTSQL‘)is not null drop function  fn_SplitTSQL GO 
create FUNCTION dbo.fn_SplitTSQL 
  (@s NVARCHAR(MAX), @split NCHAR(1)) RETURNS TABLE AS RETURN   SELECT 
    n - LEN(REPLACE(LEFT(array, n), @split, ‘‘)) + 1 AS rn,     SUBSTRING(array, n, 
      CHARINDEX(@split, array + @split, n) - n) AS col   FROM (SELECT @s AS array) AS D     JOIN dbo.Nums 
      ON n <= LEN(array) 
      AND SUBSTRING(@split + array, n, 1) = @split; GO   
--方法二:直接拆分 
if object_id(‘f_split‘)is not null drop function  f_split go 
create function f_split ( 
@s     varchar(8000),  --待分拆的字符串 @split varchar(10)     --数据分隔符 )returns table

as 
 return  ( 
  select Row_number()over(order by Number) rn , 
  substring(@s,number,charindex(@split,@[email protected],number)-number)as col 
  from master..spt_values 
  where type=‘p‘ and number<=len(@s+‘a‘)  
  and charindex(@split,@[email protected],number)=number   ) go   
select * from dbo.f_split(‘11,2,3‘,‘,‘) 
select * from dbo.fn_SplitTSQL(‘11,2,3‘,‘,‘) GO   
--拆分多列 
if object_id(‘fn_MutiSplitTSQL‘)is not null drop function  fn_MutiSplitTSQL GO 
create FUNCTION dbo.fn_MutiSplitTSQL     (@s NVARCHAR(MAX), @split NCHAR(1) ,@[email protected] NCHAR(1)= N‘,‘) RETURNS TABLE   AS   RETURN 
  select * from (SELECT d.rn ,‘col‘+ cast( n - LEN(REPLACE(LEFT(col, n), @[email protected], ‘‘)) + 1 as varchar(10)) AS attribute,   
    SUBSTRING(col, n, CHARINDEX(@[email protected], col + @[email protected], n) - n) AS value   
  FROM (  SELECT  n - LEN(REPLACE(LEFT(array, n), @split, ‘‘)) + 1 AS rn,       SUBSTRING(array, n, CHARINDEX(@split, array + @split, n) - n) AS col     FROM (SELECT @s AS array) AS D       JOIN dbo.Nums a  
      ON n <= LEN(array)   
     AND SUBSTRING(@split + array, n, 1) = @split ) AS D       JOIN dbo.Nums a        ON n <= LEN(col)   
     AND SUBSTRING(@[email protected] + col, n, 1) = @[email protected] ) as d     PIVOT(max(value) FOR attribute  
                        IN(col1,col2 ,col3,col4,col5 )) AS P   GO   
 select col1,col2,col3,col4     from dbo.fn_MutiSplitTSQL

(‘$092-1350,099201-080901,12050720,2012-6-11$092-0970,099204-072301,12050734,2012-6-11$‘,‘$‘,‘,‘)    GO

s?q?l?s?e?r?v?e?r?结?果?集?转?为?字?符?串,布布扣,bubuko.com

时间: 2024-10-03 14:24:31

s?q?l?s?e?r?v?e?r?结?果?集?转?为?字?符?串的相关文章

P?H?P? ?5?.?3?连?接?s?q?l? ?s?e?r?v?e?r? ?2?0?0?8? ?R?2

我的机器为: xp sp3 sql server 2008 developer apache 2.2.2 php 5.3  从5.3开始,php就不再提供mssql.dll了,所以要php连接sql server 2008/2012必须要使用微软提供的sql server for php 2.0/3.0了. 有必要提醒一下,php5.4必须要3.0和Microsoft SQL Server 2012 Native Client. php官方帮助 http://php.net/manual/zh/

s?q?l? ?s?e?r?v?e?r? ?2?0?0?0?登?录?名?与?数?据?库?用?户?名?的?关?联?问?题

MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名'xxx'无效的错误的解决办法     在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复.但是,此时会出现问题,这里说明几种常见问题的解决方法.  一.孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立了一个test登录用户名,而且是以前的用户密码

S?Q?L? ?S?e?r?v?e?r?中??的?P?W?D?E?N?C?R?Y?P?T?与?P?W?D?C?O?M?P?A?R?E?函?数

前幾天有個客戶的網站出問題(不是我們開發的),請我們幫他看,主要的問題是他們的網站會員在進行查詢密碼時,會員收到信的時候在密碼的欄位竟然會出現 System.Binary[] 字樣.而我進去資料庫中查看時,發現該會員資料表中的密碼欄位是 varbinary 格式,而我當然不知道他儲存的是什麼值,進而查看他們資料庫中的 Stored Procedure 對於密碼欄位的操作方法,這才發現他們用來驗證會員是否正確登入的方法是使用 PWDCOMPARE 函數. 由於我沒看過這個函數,便上網去查看看,發現

S?Q?L?获?取?当?前?时?间?(?日?期?)

--获取当前日期(如:yyyymmdd) select CONVERT (nvarchar(12),GETDATE(),112) --获取当前日期(如:yyyymmdd hh:MM:ss) select GETDATE() --获取当前日期(如:yyyy-mm-dd) Select Datename(year,GetDate())+'-'+Datename(month,GetDate())+'-'+Datename(day,GetDate()) --获取当前日期(如:yyyy/mm/dd) se

详解使用w?s?g?e?n?和?w?s?i?m?p?o?r?t?开?发?W?e?b?S?e?r?v?i?c?e

本文旨在描述如何使用jdk自带的wsgen.exe 和wsimport.exe开发WebService. 1.新建一个java工程,项目名:WebServiceDemo.由于本文想通过完全手动建立的方式来演示整个过程,故我们的工程目录就是WebServiceDemo啦! 2.在此目录下新建Business.java 和 BusinessImpl.java两个类,分别如下: public interface Business { public String echo(String message)

W?i?n?下?h?t?t?p?d?+?p?h?p?+?m?y?s?q?l?环?境?集?成

apache+php+mysql: php下载:  VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的,  VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的  如果你选用的是Apache或者其他服务软件,那么选择VC6,选用的是IIS的话,那么请下载VC9的.  Thread Safe 是线程安全,  Non Thread Safe就是非线程安全,   官方并不建议你将Non Thread Sa

R?e?q?u?e?s?t?、?R?e?q?u?e?s?t?.?F?o?r?m?和?R?e?q?u?e?s?t?.?Q?u?e?r?y?S?t?r?i?n?g?的?区?别

Request . Request.Form 和 Request.QueryString 的区别 request 本身是一个系统的静态对象,本身也可以作为数组调用,比如 request("abc") 就是获取 request 数组中键值 "abc" 对应的值,而这个数组又不是 固定的,而是多个数组的集合,其中包含了 (QueryString ,Form ,Cookies ,ClientCertificate,ServerVariables ) 这几个服务器 变量数组

F?l?e?x?4?+?s?p?r?i?n?g?+?h?i?b?e?r?n?a?t?e?+?B?l?a?z?e?D?S?整合案例

http://wenku.baidu.com/link?url=7v5xAyD2nvChQRT60QewpvAASFHMZNvD0OxX11OASYvae8jbVNsr5I000TwwYOlChzq05c50utxcLVb6mRL_r1pSFM1QZ2p9hJvRnpeT-T7 前提是系统安装好flex插件,Myeclipse,jdk,tomcat,并将flex插件集成到Myeclipse中 http://hi.baidu.com/xzwangyu/item/5bdc91c3c3439d3108

C?#? ?读?写?S?Q?L?数?据?库?I?m?a?g?e?字?段

数据库的Image字段保存的是字节,所以写入数据库Image字段和从数据库Image字段读取的内容都应该为字节. 1.数据库Image字段读写文件      写文件:写文件的过程为将文件以流文件形式打开并将内容读取到一个byte数组,然后将此byte数组写入数据库的Image字段. 源码:     FileInfo finfo=new FileInfo("文件名");   //绝对路径 if(finfo.Exists) {         SqlConnection conn=new