我当前有一个名为 DATA
的表,它的条目如下:
abc000
ab000cde
000abc
我只想从开始和结尾删除所有0。如果0在角色之间,则将保持不变。
这也适用于同时领导和落后零:
declare @s varchar(15) = '00abc00efg000'
select substring(@s,
patindex('%[^0]%', @s),
len(@s)-patindex('%[^0]%', reverse(@s))-patindex('%[^0]%', @s)+2);
描述:这是从第一个非零符号到反向字符串中的第一个非零符号的子字符串。
说您的数据存在于列中,称为 Col1
,那么此表达式应执行
select CASE
WHEN RIGHT(col1 , 1) = '0'
THEN SUBSTRING(col1,0,PATINDEX('%[A-Z1-9]%',REVERSE(col1)))
WHEN LEFT(col1 , 1) = '0'
THEN SUBSTRING(col1,PATINDEX('%[A-Z1-9]%',col1),LEN(col1))
ELSE
Col1
END AS 'ParsedCol1'
FROM Data
我使用此技巧:
SELECT
REPLACE(REPLACE(RTRIM(LTRIM(REPLACE(REPLACE(col1, ' ', CHAR(8)), '0', ' '))), ' ', '0'), CHAR(8), ' ')
FROM
yourTable
这可能适用于SQL,因为这删除了领先&从您的字符串中尾随" 000"。
SELECT TRIM(BOTH ‘000’ FROM
‘your_data_table_column’);
请参阅更多
http://www.mydigitallife.info/remove-or-trim-first-first-first-first-few-characters-in-mysql-database-with-sql/
http://www.w3resource.com/mysql/string-functions/mysql-trim-function.php