Алгоритмы для обрезки продвижения обнуляют от поля SQL?

Я просто столкнулся с интересной проблемой попытки обрезать продвижение, обнуляет от нечислового поля в SQL. (Так как это может содержать символы, это не может только быть преобразовано в число и затем обратно.)

Это - то, что мы закончили тем, что использовали:

SELECT REPLACE(LTRIM(REPLACE(fieldWithLeadingZeroes,'0',' ')),' ','0')

Это заменяет обнуление пробелами, оставленными обрезки это, и затем помещает обнуление, въезжают задним ходом. Я думал, что это было очень умным и интересным способом сделать это, хотя не таким образом читаемый, если Вы никогда не сталкивались с ним прежде.

Там какие-либо более ясные пути состоят в том, чтобы сделать это? Еще эффективные способы сделать это? Или какие-либо другие способы сделать этот период? Я был заинтригован этой проблемой и буду интересно видеть любые методы того, чтобы обходить ее.

12
задан nhahtdh 8 January 2015 в 13:46
поделиться

2 ответа

Найти первый ненулевой символ, подстроку до конца (можно поставить 2 миллиарда для максимальных типов)

LTRIM необязателен, действительно

DECLARE @MyVar varchar(8000)

SET @MyVar = '000foobar'
SELECT LTRIM(SUBSTRING(@MyVar, PATINDEX ('%[^0]%', @MyVar), 8000))
SET @MyVar = '000000  oh my lord'
SELECT LTRIM(SUBSTRING(@MyVar, PATINDEX ('%[^0]%', @MyVar), 8000))
11
ответ дан 2 December 2019 в 22:04
поделиться

Проверить функцию TRIM {{ 1}} http://www.1keydata.com/sql/sql-trim.html

SELECT TRIM(LEADING '0' FROM fieldWithLeadingZeroes)
0
ответ дан 2 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: