在SQL Server中修剪

时间:2015-08-28 15:49:39

标签: sql sql-server tsql

我将如何修剪这个领域'633827-9062-5000-0006 4' 看起来像633827906250000006。 使用修剪函数?

该字段的长度和长度始终相同。我需要删除最后一个字符。

提前致谢。

4 个答案:

答案 0 :(得分:3)

尝试使用replace删除破折号,然后使用left获取18个第一个字符。

left(replace(your_string, '-',''), 18)

在您的示例中,这将删除空格和末尾的4并保留前18个字符。

答案 1 :(得分:1)

DECLARE @value varchar(50) = '633827-9062-5000-0006 4';
SELECT REPLACE(RTRIM(LEFT(@value, LEN(@value) - 1)), '-', '')

答案 2 :(得分:0)

要删除最后2个字符(空格和' 4'),您可以使用SUBSTRING和REPLACE,如以下示例所示:

declare @s varchar(50);
declare @t varchar(50);
set @s = '633827-9062-5000-0006 4';

set @t = substring(@s, 1, 21)
print '[' + @t + ']';

set @t = substring(@s, 1, len(@s) - 2);
print '[' + @t + ']';

set @t = replace(substring(@s, 1, len(@s) - 2), '-', '');
print '[' + @t + ']';

在第一个PRINT语句中,我对长度进行了硬编码,在第二个中,我计算了最终的字符串长度。如果你想删除破折号,第三个分配也会这样做。

如果字符串长度可能少于2个字符,则STRING会抱怨传递给子字符串函数的长度参数无效。'您可以使用CASE语句来防止这种情况。

答案 3 :(得分:0)

declare @s varchar(50);
set @s = '633827-9062-5000-0006 4';
select replace(substring(@s,0,charindex(' ',@s)),'-','')