怎么把同一个表中的字符串字段连接起来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把同一个表中的字符串字段连接起来相关的知识,希望对你有一定的参考价值。

参考技术A sqlserver的话,字符串和字段用+即可(前提是两者都是字符型数据)
如:
select 'a'+一个字符型的字段 from table_namemysql的话,用concat函数
如:
select concat('a',一个字符型的字段) from table_name

Sybase 字符串连接

有以下表 Test,有两个字段A int,B varchar

我想将Test表中的所有结果集以 ‘A-B,A-B’的形式连接成一个长的字符串

请问该怎么做,非常感谢大家~
convert 我知道,重点是怎么把结果集以这种新式连接起来

都没有实现,解决方案:
创建一个临时表
create table #tmp(A int,B varchar(20),updated varchar(1) default 'N')
insert into #tmp(A,B)
select A,B from Test
declare @rowct int,@str varchar(255)
select @rowct = count(A) from #tmp
while(@rowct >0)
begin
select top 1 A,B from #tmp where updated='N'
update #tmp set updated='Y' where ...
select @str = @str + convert(varchar(6),A)+'-'+B from #tmp where ...
set @rowct = @rowct -1
end
select @str

declare @str varchar(8000)
SET @str=''

SELECT @str=@str+CAST(A AS varchar(10))+'-'+B+','
FROM Test;
SET @str=LEFT(@str,LEN(@str)-1)
SELECT @str;

由于varchar只支持最多8000字节长度,所以,如果记录很多,可能记录就不全了。
参考技术A convert(char(50),A - convert(integer,B))

convert是sybase中的类型转换函数。
convert(datatype,变量[,显示格式])
参考技术B 哥们~~这么整
create table #test (A int, B varchar(10))
insert #test values(10,"测试")
insert #test values(11,"测试1")

create table #test1 (A int, B varchar(10),C varchar(20))
insert into #test1
select a.A,a.B,convert(varchar(10),a.A) + '-' + a.B from #test a

select C from #test1 这个C字段是否就是你需要的效果?
参考技术C ‘A-B,A-B’是什么概念??字符串相减??还是相连??
相连:

select rtrim(convert(char,A))+B+','+rtrim(convert(char,A))+B
FROM Test

因为int转为char是会有空格,所以用rtim将空格去掉。

基本上就是这个格式,你可以根据自己的要求来组合

select rtrim(convert(char,A))+'-'+B+','+rtrim(convert(char,A))+'-'+B
FROM Test
参考技术D select into 创建一张临时表

以上是关于怎么把同一个表中的字符串字段连接起来的主要内容,如果未能解决你的问题,请参考以下文章

SQLserver 怎么把查出的字符串结果作为子查询条件

sql 表中一个字段含有大量的中文字符,怎么替换掉

c#如何获取数据库中某个表中的其中一个字段的多条值

oracle怎么将表中字段的很长的字符串数据更改其中一两个字符

【SQL】表中的空字符串与NULL中的区别何在

abap怎么把字段类型不一样的一个内表的数据填充到另外一个内表中。