您可以使用:
UPPER(
SUBSTR(CNAME, 1, 1)
|| SUBSTR(CNAME, INSTR(CNAME, ' ', -1) + 1, 1)
)
爲了得到第一個和最後一個名稱的第一個字符或:
REGEXP_REPLACE(CNAME, '(\w)\w*\W*', '\1')
或
REGEXP_REPLACE(CNAME, '([A-Z])[A-Z'']*[^A-Z'']*', '\1', 1, 0, 'i')
要獲得每個的第一個字符名稱。
SQL Fiddle
的Oracle 11g R2架構設置:
CREATE TABLE sales (CNAME) AS
SELECT 'JOHN XAVIER' FROM DUAL UNION ALL
SELECT 'ANU SAM' FROM DUAL UNION ALL
SELECT 'ANU SAM' FROM DUAL UNION ALL
SELECT 'Phil ober' FROM DUAL UNION ALL
SELECT 'vivek sundar' FROM DUAL UNION ALL
SELECT 'Xylona Preis' FROM DUAL UNION ALL
SELECT 'Xylona Preis' FROM DUAL UNION ALL
SELECT 'Darren WHITE' FROM DUAL UNION ALL
SELECT 'FRANCIS GEORGE' FROM DUAL UNION ALL
SELECT 'JOHN Smith-Smythe' FROM DUAL UNION ALL
SELECT 'RICHARD O''BRIEN' FROM DUAL UNION ALL
SELECT 'GEORGE W BUSH' FROM DUAL
查詢1:
SELECT UPPER(
SUBSTR(CNAME, 1, 1)
|| SUBSTR(CNAME, INSTR(CNAME, ' ', -1) + 1, 1)
) AS cname,
REGEXP_REPLACE(CNAME, '([A-Z])[A-Z'']*[^A-Z'']*', '\1', 1, 0, 'i') AS cname2
FROM Sales
Results:
| CNAME | CNAME2 |
|-------|--------|
| JX | JX |
| AS | AS |
| AS | AS |
| PO | Po |
| VS | vs |
| XP | XP |
| XP | XP |
| DW | DW |
| FG | FG |
| JS | JSS |
| RO | RO |
| GB | GWB |
來源
2017-10-13 08:36:13
MT0
如果它們有兩個以上的名稱會發生什麼?例如:Dave Benson-Philips或耶穌H基督? – JohnHC