TransWikia.com

Como criar uma CONSTRAINT CHECK no SQLServer para validar versões com RegEx

Stack Overflow em Português Asked on December 28, 2021

Olá estou criando uma tabela no SQLServer onde quero fazer a validação de um campo para só aceitar a máscara correta de versões, assim:

CREATE TABLE Versao (
    id INT NOT NULL IDENTITY(1,1),
    codigo NVARCHAR(100) NOT NULL,

    CONSTRAINT [PK_Versao] PRIMARY KEY (id),
    CONSTRAINT [CK_Versao_codigo] CHECK (codigo LIKE '%[0-9]+.[0-9]+.[0-9]+.[0-9]+%')
);

Meu problema é quando eu tento fazer a inserção de um registro mas não está funcionando, assim:

INSERT INTO Versao (codigo) VALUES ('0.123.0198651687.1');

Teoricamente, com base nesse teste que fiz no site RegExr o regex validaria se o código usado contém somente números e que tenha 4 blocos com 3 pontos entre eles, Sendo assim porque meu SQL Server não quer aceitar o insert?

One Answer

Achei a solução logo após postar (rsrs), aqui está:

CREATE TABLE Versao (
    id INT NOT NULL IDENTITY(1,1),
    codigo NVARCHAR(100) NOT NULL,
    --
    CONSTRAINT [PK_Versao] PRIMARY KEY (id),
    CONSTRAINT [CK_Versao_codigo] CHECK (codigo LIKE '[0-9]%.[0-9]%.[0-9]%.[0-9]%')
);

CREATE INDEX [UX_Versao_codigo] ON Versao(codigo);

INSERT INTO Versao(codigo) VALUES ('0.0.0.1'), ('1230.0.123120.1');

SELECT * FROM Versao

meu problema é que eu estava entendendo o CHECK como só aceitar se estiver dentro

Answered by LeandroLuk on December 28, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP