Eu tenho duas colunas que se parecem com isso:
Start_Post End_Post ---------- -------- 102+20,45 153+19,22 120+21,25 220+25,30 ... ...
E eu quero introduzir uma restrição para cada coluna:
Start_Pos
Alcance mínimo: 100+50,30
Alcance máximo: 150+20,65End_Pos
Alcance mínimo: 150+60,30
Alcance máximo: 500+20,75
Todos os valores estão em pés e seguem um formato especial. É uma convenção de construção e eu não sou um especialista, mas que eu saiba, 1 + 00 seriam 100 pés. Essencialmente, tomando o intervalo acima de 100+50,30 a 150+20,65 significaria uma distância de 4970 pés. O que eu fiz foi apenas remover o sinal de mais e subtrair os dois números. Espero que tenha feito sentido.
Existe uma maneira de definir essa restrição, mantendo o formato?
Supondo que os dígitos à esquerda de
+
são medidos em unidades de 100, talvez você possa criar restrições como esta:No entanto, isso não permite restrições dinâmicas, todas as linhas da tabela serão restritas a essas medidas, que podem ser exatamente o que você precisa.
Se você precisar ajustar dinamicamente as restrições para cada linha independente, poderá fazer isso:
A seleção de dados ficaria assim:
Resultados, assim:
As colunas de postagem foram divididas em duas para nos permitir usar os tipos de dados corretos para armazenar dados numéricos. Se tentarmos armazenar
175+80.50
em um único campo, acabamos usando umavarchar(x)
coluna, que permite todos os tipos de possibilidades de dados ruins, comotee+27.-1
, que são muito difíceis de prevenir de forma abrangente. Portanto, armazenamos a estação em uma coluna e o deslocamento dessa estação na próxima coluna. Ao apresentar esses dados na tela ou em relatórios para humanos , usaríamos a versão concatenada mostrada acima.Isso funcionou para mim também, além do que Max propôs.