删除前导和尾随引号

Rou*_*und 2 sql-server query t-sql sql-server-2016 string-manipulation

我有一个可能以引号开头和结尾的字段。如果字符串以引号开头和结尾,我只想删除引号。如果字符串中存在引号,那么我希望保留它们。

REVERSE如果该字段确实以引号开头和结尾,我已经使用了一些有用的东西,但如果不是,则它只返回空值。

如果字段结果不是以引号开头,我如何确保我仍然获得字段结果?

我拥有的:

REVERSE(STUFF(REVERSE(STUFF(fieldname, CHARINDEX('"', fieldname), LEN('"'), '')), CHARINDEX('"', REVERSE(STUFF(fieldname, CHARINDEX('"', fieldname), LEN('"'), '')), 1), 1, ''))
Run Code Online (Sandbox Code Playgroud)

Ran*_*gen 6

你可以试试这样的

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;
Run Code Online (Sandbox Code Playgroud)

数据库<>小提琴


Aki*_*ina 5

SELECT TRIM(' "' FROM fieldname) fieldname
FROM tablename
Run Code Online (Sandbox Code Playgroud)

TRIM() 功能需要 SQL Server 2017。