50 votes

SQL Server vérifie le type de données résultant de l'expression

Normalement, je placerais le type de données dans une table temporaire et j'inspecterais le type de colonne de la table, par ex.

select 1.0 N into tbl

sp_help tbl

La colonne N révèle ensuite le type de données de l'expression 1.0 . (Il s'agit d'un exemple simple)

Il existe une fonction SQL permettant d'inspecter directement le type de données d'une expression, mais son nom m'échappe pour le moment.

Quel est le nom de cette fonction ?

85voto

gbn Points 197263

SQL_VARIANT_PROPRIÉTÉ est proche

DECLARE @what sql_variant;
DECLARE @foo decimal(19,3) = 1, @bar decimal(11,7) = 2;

SELECT @what = @foo / @bar;
SELECT
    SQL_VARIANT_PROPERTY(@what, 'BaseType'),
    SQL_VARIANT_PROPERTY(@what, 'Precision'),
    SQL_VARIANT_PROPERTY(@what, 'Scale'),
    SQL_VARIANT_PROPERTY(@what, 'MaxLength');

SELECT @what = @foo + @bar;
SELECT
    SQL_VARIANT_PROPERTY(@what, 'BaseType'),
    SQL_VARIANT_PROPERTY(@what, 'Precision'),
    SQL_VARIANT_PROPERTY(@what, 'Scale'),
    SQL_VARIANT_PROPERTY(@what, 'MaxLength');

SELECT @what = @foo * @bar;
SELECT
    SQL_VARIANT_PROPERTY(@what, 'BaseType'),
    SQL_VARIANT_PROPERTY(@what, 'Precision'),
    SQL_VARIANT_PROPERTY(@what, 'Scale'),
    SQL_VARIANT_PROPERTY(@what, 'MaxLength');

Ou une table temporaire/SELECT..INTO comme extension de ce que vous avez déjà fait.

Editar: La réponse de Remus ?

6voto

Abe Miessler Points 34869

Tout ce à quoi je peux penser, ce sont les ISNUMERIC y ISDATE fonctions.

Ils renvoient un 1/0 lorsqu'on leur passe une expression. Malheureusement, je ne vois rien qui puisse renvoyer le type si on lui fournit une expression.

UPDATE :

Essayez SQL_VARIANT_PROPRIÉTÉ ! Je pense que c'est ce que vous cherchez. Difficile à trouver...

2voto

Joe Stefanelli Points 72874

Je n'ai jamais vu une telle fonction.

Extrait de l'article de MSDN sur Expressions T-SQL :

Pour une expression simple composée d'un constante, d'une variable, d'un scalaire fonction ou nom de colonne : le type de données le type de données, la collation, la précision, l'échelle et le nom de la colonne. de l'expression est le type de données type de données, la collation, la précision, l'échelle et la valeur de l'élément référencé. valeur de l'élément référencé.

Lorsque deux expressions sont combinées par utilisant des opérateurs de comparaison ou logiques, le type de données résultant est booléen et la valeur est l'une des suivantes : TRUE, FALSE, ou UNKNOWN. Pour plus d'informations informations sur les types de données booléennes voir Opérateurs de comparaison (Transact-SQL).

Lorsque deux expressions sont combinées par utilisant des opérateurs arithmétiques, binaires ou de chaîne de caractères. l'opérateur détermine le type de données type de données résultant.

Des expressions complexes composées de plusieurs symboles et d'opérateurs sont évaluées en un résultat à valeur unique. Le type de données, la collation, la précision et la valeur de l'expression l'expression résultante est déterminée par combinant les expressions composantes, deux par deux, jusqu'à l'obtention d'un résultat final. soit atteint. La séquence dans laquelle les expressions sont combinées est définie par la préséance des opérateurs dans l'expression expression.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X