连接字符串以指定字段名称

时间:2011-08-11 21:09:50

标签: mysql sql sql-server database

使用MS SQL Server但是在MySQL上移植所以我需要一个理想的解决方案(但最好是MySQL)

我正在尝试连接两个字段,以便为select语句指定字段名称。

示例表:

id     | name
1      | John
2      | Bob


SELECT id, 'na'+'me' as value FROM table WHERE 1=1

实际回报(当然)

id     | value
1      | name
2      | name

预期回报:

id     | value
1      | John
2      | Bob

我不清楚如何指定将连接结果用作字段名,而不是结果。

2 个答案:

答案 0 :(得分:3)

我对您的问题感到困惑,但获取expected return所需的查询只是:

SELECT id, name as value FROM Table

这将适用于mySQL和SQL Server

<强>更新

我刚刚谈到指定使用连接值选择哪个列。要在SQL Server中执行此操作,请使用动态SQL。例如:

EXEC('SELECT id, ' + 'na' + 'me' + ' as value FROM table WHERE 1=1')

如果您真正计划使用它,那么上述内容将毫无意义。如果name是参数或其他内容,那么这将是有意义的。在SQL Server中使用动态SQL之前,请务必阅读this article

MySQL版本:

mysql> set @sql_text := 'SELECT id, ' + 'na' + 'me' + ' as value FROM table WHERE 1=1';

mysql> prepare stmt from 
    -> @sql_text

mysql> EXECUTE stmt

取自here

答案 1 :(得分:0)

听起来你正试图用SQL动态生成SQL?如果是这样,请使用SQL生成有效的SQL命令,然后在其上使用EXEC命令。 (MSDN documentation for T-SQL EXEC

DECLARE @SQL varchar(max)
SET @SQL = 'SELECT id, ' + 'na' + 'me' + ' as value FROM table WHERE 1=1'
EXEC (@SQL);

如果您需要从数据生成,请执行以下操作:

DECLARE @SQL varchar(max)
SELECT @SQL = 'SELECT id, ' + field1 + field2 + ' as value FROM table WHERE 1=1' FROM sometable WHERE 1=1
EXEC (@SQL);

这通常不鼓励安全。根据您获取数据以生成SQL的方式,它可能允许SQL注入攻击。请谨慎使用。