2010-02-09 4 views

Répondre

1

Eh bien, il y a ISDATE() et ISNUMERIC(). Qu'avez-vous besoin de faire?

+0

Je souhaite que les fonctions intégrées permettent de trouver int, currency et decimal. – susanthosh

+1

Collez un exemple de code, nous ne pouvons pas déterminer ce que vous voulez. – Codesleuth

0

Si vous avez affaire à un SQL_VARIANT, utilisez le haut-SQL_VARIANT_PROPERTY fonction:

SELECT SQL_VARIANT_PROPERTY(@value,'BaseType') AS 'Base Type' 
0

Il n'y a pas de véritables fonctions comme vous encastrables recherchez. La seule option à déterminer est d'interroger sysobjects, syscolumns et systypes (SQL 2000).

select 
    obj.name, 
    col.name, 
    typ.name 
From dbo.sysobjects obj 
    Inner Join dbo.syscolumns col 
     On col.id = obj.id 
    Inner Join dbo.systypes typ 
     On typ.xusertype = col.xusertype 

Cette requête va lister toutes les tables avec leurs colonnes et leurs types. La monnaie sera de type monétaire, la décimale est numérique. Dans le tableau des colonnes, vous pouvez trouver la précision et l'échelle de numérique.

+0

-1 pour une fausse déclaration, +1 pour une réponse très utile. Il y a des fonctions qui font ce qu'il cherche, comme je l'ai dit dans ma réponse. Ils ne font peut-être pas tout ce qu'il cherche - alors votre réponse peut aider d'une manière non standard. – Hogan

+0

IsDate J'ai certainement supervisé, mais s'il vous plaît pouvez-vous éclairer comment IsNumeric est capable de différencier un type numérique, monétaire et entier? C'est la question originale et donc j'ai fait l'addition "... comme tu cherches" car il n'y a pas de fonction à faire IsMoney, IsInteger ou IsNumeric (en ne détectant que le type numérique au lieu de vérifier un nombre). – KMB

+0

Mais cela ne va pas regarder les données dans un champ varchar et vous dire si c'est un entier. C'est ce que la plupart des gens qui posent ce genre de question veulent pouvoir faire. – HLGEM

Questions connexes