Sql-Server

刪除前導和尾隨引號

  • August 28, 2019

我有一個可能以引號開頭和結尾的欄位。如果字元串以引號開頭和結尾,我只想刪除引號。如果字元串中存在引號,那麼我希望保留它們。

如果欄位確實以引號開頭和結尾,我已經使用REVERSE了和東西,但如果不是,它只返回null。

如果它不是以引號開頭,我如何確保我仍然獲得欄位結果?

是)我有的:

REVERSE(STUFF(REVERSE(STUFF(fieldname, CHARINDEX('"', fieldname), LEN('"'), '')), CHARINDEX('"', REVERSE(STUFF(fieldname, CHARINDEX('"', fieldname), LEN('"'), '')), 1), 1, ''))

你可以試試這樣的

SELECT CASE WHEN RIGHT(fieldname,1) = '"' AND LEFT(fieldname,1) = '"' THEN REVERSE(STUFF(REVERSE(STUFF(fieldname, 1, 1, '')), 1, 1, '')) 
      WHEN RIGHT(fieldname,1) = '"' THEN REVERSE(STUFF(REVERSE(fieldname), 1, 1, '')) 
      WHEN LEFT(fieldname,1) = '"' THEN STUFF(fieldname, 1, 1, '')
      ELSE fieldname END as fieldname
FROM #temp;

DB<>小提琴

SELECT TRIM(' "' FROM fieldname) fieldname
FROM tablename

TRIM()功能需要 SQL Server 2017。

引用自:https://dba.stackexchange.com/questions/244756