2009-11-12 61 views
0

我想在SELECT語句中加入一些屬性視作一個例如如何在sql select語句中連接屬性?

select id, (name + ' ' + surname + ' ' + age) as info from users 

這不起作用,怎麼辦呢? 我正在使用postgreSQL。

+2

你試過了嗎?它有用嗎?問題是什麼? – 2009-11-12 17:18:49

+1

這是什麼問題?當你嘗試上述時會發生什麼?你使用什麼數據庫服務器? – Joe 2009-11-12 17:19:14

回答

4

Postgres使用||concatenate strings;您的查詢必須是:

select id, (name || ' ' || surname || ' ' || age) as info from users 

這應該只是一個全鍵盤上的回車鍵上方的關鍵,但在我的它不是一個賣線 - 有一個在它的中間休息。你必須按住Shift鍵來獲取角色(稱爲管道,btw)。

2

如果你使用MySQL的甲骨文然後嘗試CONCAT功能:

SELECT id, CONCAT(name, ' ', surname, ' ', age) as info FROM users 
+0

這也適用於oracle。 – 2009-11-12 17:23:08

2

這完全可能是依賴於數據庫的我會看看爲你的數據庫連接函數運行選擇。

例子。 Mysql:CONCAT(姓名,年齡)。

1

這應該是原樣,但一般情況下,最好不要做太多的串接SQL方面,如果你能幫助它;而是返回所有列並在另一端連接它們。

你正在使用什麼數據類型?您可能需要將CAST/CONVERT納入(n)varchar

+2

我不同意。我更喜歡在結果集內完成儘可能多的操作,而不是將代碼添加到應用程序中。 – 2009-11-12 17:21:27

+0

@Larry - 不是那種把你鎖定在連接數據中的嗎?如果我決定將事情列爲姓氏,姓名(年齡),該怎麼辦?現在我不得不寫一個新的查詢/ sproc或解析字符串。對我來說,數據庫主要用於數據存儲和訪問以及很少的數據操作。 – Nick 2009-11-12 17:29:52

+0

@Nick:是的,但另一種方法是您需要連接連接到數據庫的每個代碼庫中的字符串。 – 2009-11-12 18:08:58

2

您可能需要在連接之前將字段強制轉換爲通用類型。例如,在T-SQL中可以讀取。

Select id, Cast(name as varchar(50)) + ' ' + Cast(surname as varchar(50)) + ' ' + 
    Cast(age as varchar(3)) As info From Users 
2

||用於此目的。

使用它像 select name ||' '|| surname ||' '||年齡信息從用戶

1

確保你的數據類型是相似的,並根據需要將任何數據類型轉換爲字符串:

select id, (name + ' ' + surname + ' ' + convert(varchar(3),age)) as info from users 
3

相信ANSI標準連接運算符是:||

SELECT id, name ||' ' || surname || ' ' || age AS info FROM users 
+0

:)我正在寫你的答案,而你已經發布了你的答案。你可以看到50秒的差異。 – 2009-11-12 17:23:38

+0

+1 cuz你是對的第一 – 2009-11-12 17:30:25

1

在我認識的大多數數據庫中都能正常工作,但您可能必須將CAST年齡字段設置爲TEXT。確切的做法取決於你使用的數據庫,你沒有指定。

+0

呃,這是另一個原因,爲什麼我喜歡甲骨文超過SQL Server - 隱式數據類型轉換。 – 2009-11-12 18:10:15