2014-04-28 44 views
0

我只是有這個問題,不知道是否可以通過SQL查詢來實現使用SQL查詢來利用領域

我有我的數據庫名稱字段 - SAM馬修斯M和我想將其轉換爲

Sam Mathews M

有沒有辦法通過SQL查詢來實現這一點。我知道寫一個PHP代碼來存檔它遍歷字符,但需要知道這是否是一種可能性...

謝謝, 塞繆爾馬修斯。

+0

你會在PHP中使用同樣的方法可在SQL中使用 - 儘管效率並不高,因爲它不是SQL的優點。但是有一些函數可以識別模式,生成子字符串,並用小寫字母替換這些子字符串。然而,從數據庫引擎/系統到系統,確切的語法可能有所不同 - 那麼您運行哪一個? –

+0

看看這裏http://stackoverflow.com/questions/19339538/sql-server-return-string-procedure-initcap –

+0

我使用普通的web服務器 - phpmyadmin服務器。讓我知道你是否需要更多信息。 謝謝! –

回答

1

您沒有告訴我們您使用的是哪個數據庫。

所以PostgreSQL的甲骨文有折現法initcap

-- PostgreSQL 
select initcap('SAM MATHEWS M') 

-- Oracle 
select initcap('SAM MATHEWS M') from dual 

將打印出預期的結果

Sam Mathews M 

對於SQLServer的不存在似乎是這樣一個簡單的解決方案,你必須去一個UDF:SQL: capitalize first letter only

+0

謝謝,我今晚會檢查這些信息,並保持更新。 再次感謝! –

0

我知道這是令人厭惡的,而不是genaric一個偉大的延伸,但我覺得心不是圍繞anothor工作,爲這個

declare @string as nvarchar(20) = 'SAM MATHEWS M' 
declare @1 as nvarchar(20) = PARSENAME(REPLACE(@string, ' ', '.'), 1) 
declare @2 as nvarchar(20) = PARSENAME(REPLACE(@string, ' ', '.'), 2) 
declare @3 as nvarchar(20) = PARSENAME(REPLACE(@string, ' ', '.'), 3) 

SELECT Upper(left(@3,1)) + LOWER(RIGHT(@3,LEN(@3)-1)) 
+ ' ' 
+ Upper(left(@2,1)) + LOWER(RIGHT(@2,LEN(@2)-1)) 
+' ' 
+Upper(left(@1,1)) + LOWER(RIGHT(@1,LEN(@1)-1)) 

這是MSSQL服務器