使用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我不知道如何指定将连接结果用作字段名,而不是结果。
发布于 2011-08-12 05:12:34
我被你的问题搞糊涂了,但获取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')如果这就是你实际打算使用它的方式,那么上面的说明就没有意义了。如果na和me是参数或其他东西,这将是有意义的。在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升级而来。
发布于 2011-08-12 05:24:12
听起来像是在尝试用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注入攻击。请谨慎使用。
https://stackoverflow.com/questions/7032873
复制相似问题