删除sql server中某个表列中的单引号

wsewodh2  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(488)

我正在尝试实现查询,以删除整列中几行中存在的单个引号。
我尝试了以下查询来实现它,但是没有成功。请帮帮我。

SELECT CASE WHEN RIGHT(saleDate,1) = '"' AND LEFT(saleDate,1) = '"' THEN REVERSE(STUFF(REVERSE(STUFF(saleDate, 1, 1, '')), 1, 1, '')) 
       WHEN RIGHT(saleDate,1) = '"' THEN REVERSE(STUFF(REVERSE(saleDate), 1, 1, '')) 
       WHEN LEFT(saleDate,1) = '"' THEN STUFF(saleDate, 1, 1, '')
       ELSE saleDate END as saleDate
FROM [Staging].[Target_ActivationFlowPrepaidAct];
SET saleDate = REPLACE(saleDate,'"', '')
SELECT TRIM(leading '' FROM saleDate) FROM [Staging].[Target_ActivationFlowPrepaidAct]

数据-

saleDate
2020/04/20 12:42:05
2020/04/22 11:35:58
2020/04/24 08:10:50
2020/04/25 10:06:59
'2018-11-29 12:47:23'
'2018-12-04 18:36:08'
'2018-12-10 11:33:09'
'2018-12-15 12:33:08'

输出-

saleDate
2020/04/20 12:42:05
2020/04/22 11:35:58
2020/04/24 08:10:50
2020/04/25 10:06:59
2018-11-29 12:47:23
2018-12-04 18:36:08
2018-12-10 11:33:09
2018-12-15 12:33:08
tf7tbtn2

tf7tbtn21#

我想你只是在找 REPLACE() ```
CREATE View MyData AS
SELECT
'2020/04/20 12:42:05' Value
UNION ALL SELECT '2020/04/22 11:35:58'
UNION ALL SELECT '2020/04/24 08:10:50'
UNION ALL SELECT '2020/04/25 10:06:59'
UNION ALL SELECT '2018-11-29 12:47:23'
UNION ALL SELECT '''2018-12-04 18:36:08'''
UNION ALL SELECT '''2018-12-10 11:33:09'''
UNION ALL SELECT '''2018-12-15 12:33:08''';

SELECT Value, REPLACE(Value, '''', '') OutputValue
FROM MyData;

这是一把小提琴
ecr0jaav

ecr0jaav2#

不要将日期存储为字符串。相反,你应该使用 date -像数据类型。。。不需要问这个问题。
也就是说,如果要删除前导单引号和尾随单引号,可以使用 TRIM() :

SELECT TRIM('''' from saledate) orderdate
FROM [Staging].[Target_ActivationFlowPrepaidAct];

注意,单引号需要用附加的单引号转义。
这种方法的优点是只删除字符串开头和结尾的单引号,而不可能删除嵌入的字符串。虽然这似乎对您的用例没有影响,但在更复杂的情况下,这可能很重要。

相关问题