Nat*_*Pet 16 sql trim character
我有以下字符串:'BOB*',我如何修剪*所以它显示为'BOB'
我尝试了RTRIM('BOB*','*'),但不起作用,因为只需要1个参数.
Tee*_*jay 21
TRIM char FROM string在MS SQL Server中实现Oracle的另一个很好的方法如下:
~*可以用空格替换要修剪的字符LTrim+ RTrim获得的字符串*例如:
REPLACE(REPLACE(LTrim(RTrim(REPLACE(REPLACE(string,' ','~'),'*',' '))),' ','*'),'~',' ')
Run Code Online (Sandbox Code Playgroud)
Chr*_*uez 17
CREATE FUNCTION dbo.TrimCharacter
(
@Value NVARCHAR(4000),
@CharacterToTrim NVARCHAR(1)
)
RETURNS NVARCHAR(4000)
AS
BEGIN
SET @Value = LTRIM(RTRIM(@Value))
SET @Value = REVERSE(SUBSTRING(@Value, PATINDEX('%[^'+@CharacterToTrim+']%', @Value), LEN(@Value)))
SET @Value = REVERSE(SUBSTRING(@Value, PATINDEX('%[^'+@CharacterToTrim+']%', @Value), LEN(@Value)))
RETURN @Value
END
GO
--- Example
----- SELECT dbo.TrimCharacter('***BOB*********', '*')
----- returns 'BOB'
Run Code Online (Sandbox Code Playgroud)
Mik*_*Vee 11
如果你想删除所有的星号,那么很明显:
SELECT REPLACE('Hello*', '*', '')
Run Code Online (Sandbox Code Playgroud)
但是,如果你最后有多个星号,并且多个星号,但只对修剪尾随的星号感兴趣,那么我会使用这个:
DECLARE @String VarChar(50) = '**H*i****'
SELECT LEFT(@String, LEN(REPLACE(@String, '*', ' '))) --Returns: **H*i
Run Code Online (Sandbox Code Playgroud)
我更新了这个答案,包括show如何删除主角:
SELECT RIGHT(@String, LEN(REPLACE(REVERSE(@String), '*', ' '))) --Returns: H*i****
Run Code Online (Sandbox Code Playgroud)
LEN()有一个" 功能 "(看起来很像一个bug),它不计算尾随空格.
LEFT('BOB*', LEN('BOB*')-1)
Run Code Online (Sandbox Code Playgroud)
应该这样做。
| 归档时间: |
|
| 查看次数: |
90931 次 |
| 最近记录: |