2011-08-11 76 views
3

使用MS SQL Server,但移植在MySQL所以我需要两个解决方案理想的(但MySQL的最好)连接字符串指定字段名

我试图来连接,以指定字段名两场选择语句。

示例表:

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

你在哪里指定你的列名?在应用程序? – Natalia

+0

Bot wuite肯定如果我理解,但如果你想要你的预期返回结果:SELECT id,[name] value FROM table –

+0

你如何得到'na'和'me'值? – Karolis

回答

3

我很困惑你的问题,但查询你需要得到expected return很简单:

SELECT id, name as value FROM Table 

这将MySQL和SQL服务器

更新工作

对我而言,您可能正在讨论指定使用连接值选择哪个列。要在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解除。

+0

它会在MySQL中工作吗? – Natalia

+0

不,这只是SQL Server。试图拿出相当于MySQL的 –

+0

用MySQL版本更新 –

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注入攻击。谨慎使用。