2011-08-11 110 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注入攻擊。謹慎使用。