使用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
我不清楚如何指定将连接结果用作字段名,而不是结果。
答案 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')
如果您真正计划使用它,那么上述内容将毫无意义。如果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。
答案 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注入攻击。请谨慎使用。