0
嗨,我想以檢索用戶ID使用的瀏覽器的列表選擇案例與子查詢中選擇並使用最
表包含
用戶ID INT
BrowserName爲nvarchar(40)
這是我的查詢
select browser =
CASE
WHEN (PATINDEX('%IE%',BrowserName) IS not null) THEN SUBSTRING(BrowserName,PatIndex('%IE%',BrowserName),8)
WHEN (PATINDEX('%Firefox%',BrowserName) IS not null) THEN SUBSTRING(BrowserName,PatIndex('%Firefox%',BrowserName),8)
WHEN (PATINDEX('%Chrome%',BrowserName) IS not null) THEN SUBSTRING(BrowserName,PatIndex('%Chrome%',BrowserName),6)
END
from tableBrowsers where UserId =21
但是如何在這個查詢中只選擇前1個子字符串。
例如:當在有需要的情況下語句只一行這種情況下返回後,我想這一點,但沒有得到主意如何的情況下,實現
THEN select top 1 SUBSTRING(BrowserName,PatIndex('%IE%',BrowserName),8) from browsertable
輸出會是這樣
IE
FIREFOX
CHROME
如果用戶使用三種瀏覽器
其他?有沒有可能? ?雖然它服務於我的需求,但不同的需要更多的負載? ?? –
我沒有看到任何其他的方式(除了可能GROUP BY,但這會使查詢更復雜,有效地是相同的)。爲了提高性能,您可能希望將計算出的子字符串值存儲在單獨的列中(例如,使用觸發器) – jeroenh