1
resposta

CONSTRAINT CHECK

Não sei se meu pensamento esta errado,mas segue minha duvida. Vejo alguns usuarios que ao cadastrar nomes , eles não tem um padrão. Exemplo: Em uma empresa são cadastrados 3 nomes na tela de cadastro

Carlos eduardo JOÃO

Veja que são 3 nomes com padrões diferentes.

Como podemos determinar um padrão utilizando a CONSTRAINT CHECK? Utilizando a primeira letra do nome maiuscula.

A sugestão que ja me deram seria deixar tudo maiusculo.

1 resposta

Uma alternativa que eu vejo para isso seria você criar um gatilho (trigger). Toda vez que algum dado for inserido, fazer a padronização da informação. Aqui tem um exemplo que converte tudo para maiúsculo (uppercase)

CREATE TRIGGER UpperPosition ON EmployeeStatistics
FOR INSERT, UPDATE AS
    UPDATE T SET T.Position=Upper(T.Position)
    FROM EmployeeStatistics T
    INNER JOIN inserted I ON (T.ID = I.ID)

Para deixar apenas a primeira letra maiúscula e o resto minúsculo (propercase), você teria que fazer alterações. Eu achei um exemplo que pode te dar uma idéia de como fazer, no caso o exemplo é uma função, mas você pode pegar apenas a parte da query

IF OBJECT_ID('dbo.fn_TitleCase') IS NOT NULL
DROP FUNCTION dbo.fn_TitleCase;
GO
CREATE FUNCTION dbo.fn_TitleCase
(
    @Input nvarchar(1000)
)
RETURNS TABLE
AS
RETURN
SELECT Item = STRING_AGG(splits.Word, ' ')
FROM (
    SELECT Word = UPPER(LEFT(value, 1)) + LOWER(RIGHT(value, LEN(value) - 1))
    FROM STRING_SPLIT(@Input, ' ')
    ) splits(Word);
GO

---Testing the function:

SELECT *
FROM dbo.fn_TitleCase('this is a test');

O que você precisa seria isso:

UPPER(LEFT(meu_campo, 1)) + LOWER(RIGHT(meu_campo, LEN(meu_campo) - 1))