[SQL] SQL 문에 필드에서 앞의 0을 제거
SQLSQL 문에 필드에서 앞의 0을 제거
나는 추출 파일을 생성하기 위해 SQLServer에 데이터베이스에서 읽는 SQL 쿼리를하고 있어요. 요구 사항 중 하나는 단순 VARCHAR (10) 필드는 특정 분야에서 선행 0을 제거한다. 필드 '00001A'를 포함한다면, 예를 들어, SELECT 문의 요구는 '1A'로 데이터를 반환합니다.
쉽게 이런 식으로 앞에 0을 제거하는 SQL의 방법이 있나요? 나는 RTRIM 함수가 알고 있지만이 제거 공간 만 보인다.
해결법
-
==============================
1.
select substring(ColumnName, patindex('%[^0]%',ColumnName), 10)
-
==============================
2.
select replace(ltrim(replace(ColumnName,'0',' ')),' ','0')
-
==============================
3.
select substring(substring('B10000N0Z', patindex('%[0]%','B10000N0Z'), 20), patindex('%[^0]%',substring('B10000N0Z', patindex('%[0]%','B10000N0Z'), 20)), 20)
N0Z는, 즉, 앞의 0 그들 앞에 오는 아무것도 제거 얻을 것이다 반환합니다.
-
==============================
4.나는 같은 필요했고이를 사용 :
나는 같은 필요했고이를 사용 :
select case when left(column,1) = '0' then right(column, (len(column)-1)) else column end
-
==============================
5.당신은 쿼리가 제로 또는이 같은 경우 문이 점을 설정할 수 있습니다 그 문제에 대한 다른 값의 문자열 대신 0을 반환하려면 :
당신은 쿼리가 제로 또는이 같은 경우 문이 점을 설정할 수 있습니다 그 문제에 대한 다른 값의 문자열 대신 0을 반환하려면 :
select CASE WHEN ColumnName = substring(ColumnName, patindex('%[^0]%',ColumnName), 10) THEN '0' ELSE substring(ColumnName, patindex('%[^0]%',ColumnName), 10) END
-
==============================
6.당신은이를 사용할 수 있습니다 :
당신은이를 사용할 수 있습니다 :
SELECT REPLACE(LTRIM(REPLACE('000010A', '0', ' ')),' ', '0')
-
==============================
7.이 시도 할 수 있습니다 - 필요한 경우에만 제거 앞의 0에 특별한주의를 취합니다
이 시도 할 수 있습니다 - 필요한 경우에만 제거 앞의 0에 특별한주의를 취합니다
DECLARE @LeadingZeros VARCHAR(10) ='-000987000' SET @LeadingZeros = CASE WHEN PATINDEX('%-0', @LeadingZeros) = 1 THEN @LeadingZeros ELSE CAST(CAST(@LeadingZeros AS INT) AS VARCHAR(10)) END SELECT @LeadingZeros
또는 당신은 단순히 호출 할 수 있습니다
CAST(CAST(@LeadingZeros AS INT) AS VARCHAR(10))
-
==============================
8.여기에 제거합니다 문자열에서 0을 선도하는 SQL 스칼라 값 기능은 다음과 같습니다
여기에 제거합니다 문자열에서 0을 선도하는 SQL 스칼라 값 기능은 다음과 같습니다
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Vikas Patel -- Create date: 01/31/2019 -- Description: Remove leading zeros from string -- ============================================= CREATE FUNCTION dbo.funRemoveLeadingZeros ( -- Add the parameters for the function here @Input varchar(max) ) RETURNS varchar(max) AS BEGIN -- Declare the return variable here DECLARE @Result varchar(max) -- Add the T-SQL statements to compute the return value here SET @Result = @Input WHILE LEFT(@Result, 1) = '0' BEGIN SET @Result = SUBSTRING(@Result, 2, LEN(@Result) - 1) END -- Return the result of the function RETURN @Result END GO
-
==============================
9.경우 당신은 알 수없는 크기의 문자열에서 앞에 0을 제거 할.
경우 당신은 알 수없는 크기의 문자열에서 앞에 0을 제거 할.
당신은 물건 명령을 사용하여 고려할 수 있습니다.
여기 그것이 작동하는 방법에 대한 예입니다.
SELECT ISNULL(STUFF(ColumnName ,1 ,patindex('%[^0]%',ColumnName)-1 ,'') ,REPLACE(ColumnName,'0','') )
그것을 다룰 것 피들러 다양한 시나리오를 참조하십시오
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
-
==============================
10.확실히 작동합니다 문 다음 달 선도 0을 제거합니다.
확실히 작동합니다 문 다음 달 선도 0을 제거합니다.
SELECT replace(left(Convert(nvarchar,GETDATE(),101),2),'0','')+RIGHT(Convert(nvarchar,GETDATE(),101),8)
그냥 테이블의 날짜 필드 GETDATE ()를 교체합니다.
-
==============================
11.당신이 시도 할 수 있습니다 테이블에서 (럼 이름을 '0', '') 바꾸기를 선택
당신이 시도 할 수 있습니다 테이블에서 (럼 이름을 '0', '') 바꾸기를 선택
-
==============================
12.0을 선두 제거하려면, 당신은 1 번호 열을 곱할 수 예 : 선택 (의 ColumnName * 1)
0을 선두 제거하려면, 당신은 1 번호 열을 곱할 수 예 : 선택 (의 ColumnName * 1)
-
==============================
13.
select replace(replace(rtrim(replace(replace(replace(replace(ltrim(replace(replace([COLUMN],' ','[Ltrim]'),[Ltrim],' ')),' ',[Ltrim]),'[Ltrim]',' '),' ','[Rtrim]'),[Rtrim],' ')),' ',[Rtrim]),'[Rtrim]',' ') As Result
이 TSQL 이전에 2017, 다른 recomendateions로서의 기본적으로 동일에있는 TRIM 명령의 기능을 에뮬레이트하는 SQL 스크립트이지만, 다른 사람들은 여전히 '[RTRIM]'또는 '[발생할 수있는 하나의 흔한 문자로 대체 LTRIM은] '여전히 텍스트에서 발생할 수 있지만, 고유의 텍스트 모자를 교체, 예를 들어 GUID는 그 문제를 해결할 것입니다.
나는 속도에 관한 그것을 테스트하지 않았습니다
-
==============================
14.
select ltrim('000045', '0') from dual; LTRIM ----- 45
이 수행해야합니다.
-
==============================
15.나는 위의 아이디어에서 빌렸다. 이렇게도 빨리도 우아한. 하지만 정확합니다.
나는 위의 아이디어에서 빌렸다. 이렇게도 빨리도 우아한. 하지만 정확합니다.
케이스
WHEN left(column, 3) = '000' THEN right(column, (len(column)-3)) WHEN left(column, 2) = '00' THEN right(a.column, (len(column)-2)) WHEN left(column, 1) = '0' THEN right(a.column, (len(column)-1)) ELSE
종료
-
==============================
16.
select CASE WHEN TRY_CONVERT(bigint,Mtrl_Nbr) = 0 THEN '' ELSE substring(Mtrl_Nbr, patindex('%[^0]%',Mtrl_Nbr), 18) END
from https://stackoverflow.com/questions/92093/removing-leading-zeroes-from-a-field-in-a-sql-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQLite는 유효 테이블 이름은 무엇입니까? (0) | 2020.03.24 |
---|---|
[SQL] MySQL은 절에 의해 노동 조합 및 순서를 사용하여 (0) | 2020.03.24 |
[SQL] 테이블 행 수를 얻을 수있는 가장 효율적인 방법 (0) | 2020.03.24 |
[SQL] 교리 2의 .. IN 하위 쿼리를 수행 (0) | 2020.03.24 |
[SQL] 저장 프로 시저를 파라미터들의 배열을 전달 (0) | 2020.03.24 |