Retirar Zeros à Esquerda – Varchar (patindex)

 

select substring(ColumnName, patindex('%[^0]%',ColumnName), 10)

 

Documentação/Sintaxe:

Retorna a posição inicial da primeira ocorrência de um padrão em uma expressão específica, ou zeros se o padrão não for encontrado, em todos os tipos de dados de caractere e de texto válidos. Para obter mais informações, consulte Correspondência de padrões em critérios de pesquisa.

PATINDEX ( '%pattern%' , expression )
‘pattern’
É uma cadeia de caracteres literal. Caracteres curinga podem ser usados; entretanto, o caractere % deve vir antes e seguir pattern (exceto quando você pesquisa o primeiro e último caracteres). pattern é uma expressão da categoria de tipo de dados de cadeia de caracteres.

expression
É uma expressão, normalmente uma coluna que é pesquisada quanto ao padrão específico. expression é da categoria de tipo de dados de cadeia de caracteres.

bigint se expression for dos tipos de dados varchar(max) ou nvarchar(max); caso contrário, int.

Se pattern ou expression for NULL, PATINDEX retornará NULL quando o nível de compatibilidade de banco de dados for 70. Se o nível de compatibilidade do banco de dados for 65 ou mais baixo, retornará NULL somente quandopattern e expression forem NULL.

PATINDEX executa comparações com base no agrupamento da entrada. Para executar uma comparação em um agrupamento especificado, é possível usar COLLATE ao aplicar um agrupamento explícito à entrada.

A. Usando um padrão com PATINDEX

O exemplo a seguir localiza a posição na qual o padrão ensure inicia em uma linha específica da colunaDocumentSummary na tabela Document.

USE AdventureWorks2008R2;
GO
SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO

Aqui está o conjunto de resultados.

———–

64

 

(1 row(s) affected)

Se você não restringir as linhas a serem pesquisadas usando uma cláusula WHERE, a consulta retornará todas as linhas na tabela e registrará valores diferentes de zero para aquelas linhas nas quais o padrão foi localizado, e zero para todas as linhas nas quais o padrão não foi localizado.

B. Usando caracteres curinga com PATINDEX

O exemplo a seguir usa caracteres curinga para localizar a posição na qual o padrão inicia en_ure em uma linha específica da coluna DocumentSummary na tabela Document, na qual o sublinhado é um curinga representando qualquer caractere.

USE AdventureWorks2008R2;
GO
SELECT PATINDEX('%en_ure%', DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO

Aqui está o conjunto de resultados.

————

64

 

(1 row(s) affected)

Se você não restringir as linhas a serem pesquisadas, a consulta retornará todas as linhas na tabela e registrará valores diferentes de zero para aquelas linhas nas quais o padrão foi localizado.

C. Usando COLLATE com PATINDEX

O exemplo a seguir usa a função COLLATE para especificar explicitamente o agrupamento da expressão que é pesquisada.

USE tempdb;
GO
SELECT PATINDEX ( '%ein%', 'Das ist ein Test'  COLLATE Latin1_General_BIN) ;
GO
No comments yet.