我正在尝试实现查询,以删除整列中几行中存在的单个引号。
我尝试了以下查询来实现它,但是没有成功。请帮帮我。
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
2条答案
按热度按时间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;
ecr0jaav2#
不要将日期存储为字符串。相反,你应该使用
date
-像数据类型。。。不需要问这个问题。也就是说,如果要删除前导单引号和尾随单引号,可以使用
TRIM()
:注意,单引号需要用附加的单引号转义。
这种方法的优点是只删除字符串开头和结尾的单引号,而不可能删除嵌入的字符串。虽然这似乎对您的用例没有影响,但在更复杂的情况下,这可能很重要。