12
votes

TSQL: meilleure façon de lancer des variables au type de chaîne?

J'ai écrit une procédure TSQL qui insère une chaîne dans un fichier texte qui signifie qu'il nécessite que toutes les variables soient converties en une chaîne. Au lieu d'utiliser un cas par déclaration de cas, est-il plus facile de le faire, ce qui englobe tous les cas et force le type à un type de chaîne?

Merci d'avance


0 commentaires

3 Réponses :


28
votes

Tous-Caps est un texte littéral, une minuscule est quelque chose dans lequel vous devez interpoler une valeur: xxx

Vous pouvez éventuellement spécifier une longueur.

Malheureusement, C'est un peu plus difficile avec les datetes, si vous voulez le formater de quelque manière que ce soit différent de la représentation par défaut.

mon info est venu du Site MSDN . Je pense que vous devrez lire ce site, et d'autres, soigneusement et jouer avec lui un peu, mais j'espère que la fonction sera un bon départ.

Bonne chance !


0 commentaires

0
votes

Je ne pense pas qu'il y ait - et s'il y en avait, je n'en aurais pas confiance, car il y avait probablement très peu de contrôle sur le formatage général. Construisez le vôtre et ça va regarder exactement comme il a besoin de regarder. Facteurs à contempler:

  • Date Formatage
  • Numéros, principaux zéros, décimales, +/- signes
  • Longueur de la ligne, Word Wrap
  • Des espaces de pointe, des espaces de fuite, des espaces entre les chaînes qui n'ont pas d'espaces de dirigeants ou de fuite

    ... ça continue et allumé.


0 commentaires

1
votes

Vous devez convertir / le jeter à chaque fois. J'ai fait une fonction à utiliser:

CREATE FUNCTION QuoteNull
(
     @InputStr      sql_variant   --value to force to string
)
RETURNS
varchar(8000)
AS

BEGIN
    DECLARE @String  varchar(8000)
    SET @String=COALESCE(''''+  CASE SQL_VARIANT_PROPERTY(@InputStr,'BaseType')
                                    WHEN 'datetime' THEN CONVERT(varchar(23),@InputStr,121)
                                    ELSE CONVERT(varchar(8000),@InputStr)
                                END
                             +'''','null')
    RETURN @String
END


0 commentaires