Sql 连接select语句中的行
我有一个select语句,类似这样Sql 连接select语句中的行,sql,sql-server-2005,Sql,Sql Server 2005,我有一个select语句,类似这样 select col1 from table1 where cond1=true 这将返回如下结果 col1 _____ 5 5 6 3 但我想把它换回来 5-5-6-3 这可能吗?如果是,怎么做?请让我知道怎么做。提前感谢您的回复。您可能可以,但为什么不在应用程序中这样做呢?我不知道您使用的是哪种语言,但您可以在得到查询结果(伪代码)后执行类似操作: 您可能可以,但为什么不在应用程序中这样做呢?我不知道您使用的是哪种语言,但您可以在得到查询结果(伪代码
select col1 from table1 where cond1=true
这将返回如下结果
col1
_____
5
5
6
3
但我想把它换回来
5-5-6-3
这可能吗?如果是,怎么做?请让我知道怎么做。提前感谢您的回复。您可能可以,但为什么不在应用程序中这样做呢?我不知道您使用的是哪种语言,但您可以在得到查询结果(伪代码)后执行类似操作:
您可能可以,但为什么不在应用程序中这样做呢?我不知道您使用的是哪种语言,但您可以在得到查询结果(伪代码)后执行类似操作:
这正是您想要的:
declare @ret varchar(500)
set @ret=''
select @ret = @ret + col1 + '-' from test
select substring(@ret, 1, len(@ret)-1)
注意:如果您的col1是int,那么我认为您必须使用convert或cast使其成为varchar。这正是您想要的:
declare @ret varchar(500)
set @ret=''
select @ret = @ret + col1 + '-' from test
select substring(@ret, 1, len(@ret)-1)
注意:如果您的col1是int,那么我认为您必须使用convert或cast使其成为varchar。
如果您使用的是Microsoft SQL Server,则应该能够使用REPLACE命令执行此操作
SELECT col1,
dynamic_text = REPLACE(
(
SELECT
DISTINCT phone_col2 AS [data()]
FROM
table2
WHERE
condition
FOR XML PATH ('')
), '', '-')
FROM table1
WHERE condition
类似的操作可能会起作用。如果您使用的是Microsoft SQL Server,则应该可以使用REPLACE命令来执行此操作
SELECT col1,
dynamic_text = REPLACE(
(
SELECT
DISTINCT phone_col2 AS [data()]
FROM
table2
WHERE
condition
FOR XML PATH ('')
), '', '-')
FROM table1
WHERE condition
这样做可能会奏效。我建议您在前端执行此操作,对于大量行,这将非常缓慢。SQL Server的连接速度非常慢。您可以创建一个.net函数来获取表并返回字符串,这样可以确保速度
如果没有性能方面的顾虑,比如它是一次性的等等,那么请使用上面的其他解决方案,因为这些解决方案是在sql中处理的,我建议您在前端执行此操作,对于大量行,这将非常缓慢。SQL Server的连接速度非常慢。您可以创建一个.net函数来获取表并返回字符串,这样可以确保速度 如果没有性能方面的顾虑,比如一次性解决方案等,那么可以使用上面的其他解决方案,因为这些解决方案是在sql中处理的这同样有效:
--Sample Data
DECLARE @Test TABLE
(
Col1 int
)
INSERT @Test
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 5
--The query
SELECT SUBSTRING(
(
SELECT '-' + CAST(Col1 AS varchar(10))
FROM @Test
ORDER BY Col1
FOR XML PATH ('')
), 2, 2000) AS MyJoinedColumn
这同样有效:
--Sample Data
DECLARE @Test TABLE
(
Col1 int
)
INSERT @Test
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 5
--The query
SELECT SUBSTRING(
(
SELECT '-' + CAST(Col1 AS varchar(10))
FROM @Test
ORDER BY Col1
FOR XML PATH ('')
), 2, 2000) AS MyJoinedColumn
试试这个:
declare @Test table (rowid int identity(1,1) primary key, col1 int not null)
insert into @test Values (5)
insert into @test Values (5)
insert into @test Values (6)
insert into @test Values (3)
declare @value varchar(500)
set @value=NULL
select @value = COALESCE(@Value+'-'+CONVERT(varchar,col1),convert(varchar,col1)) from @Test
print @value
试试这个:
declare @Test table (rowid int identity(1,1) primary key, col1 int not null)
insert into @test Values (5)
insert into @test Values (5)
insert into @test Values (6)
insert into @test Values (3)
declare @value varchar(500)
set @value=NULL
select @value = COALESCE(@Value+'-'+CONVERT(varchar,col1),convert(varchar,col1)) from @Test
print @value
在MySQL下,您可以轻松做到这一点
select GROUP_CONCAT(col1 SEPARATOR '-') from table1 where cond1=true
在MySQL下,您可以轻松做到这一点
select GROUP_CONCAT(col1 SEPARATOR '-') from table1 where cond1=true
s但出于某些特定的原因,我想在SQL查询中这样做。但出于某些特定原因,我想在SQL查询中执行此操作。MS SQL Server中是否提供组_CONCAT?我通过谷歌搜索发现它不可用。不,GROUP_CONCAT在MS SQL Server中不可用,但上述解决方案是MS SQL的等效解决方案。GROUP_CONCAT在MS SQL Server中可用吗?我通过谷歌搜索发现它不可用。不,GROUP_CONCAT在MS SQL Server中不可用,但上面的解决方案是MS SQL的等效解决方案。这似乎是几乎完全相同的(几乎因为答案相同,而不是问题)这似乎是几乎完全相同的(几乎因为答案相同,而不是问题)