Opérateur de concaténation de chaînes dans Oracle, Postgres et SQL Server
Est-il un moyen d'avoir une commune de l'opérateur de concaténation dans Oracle, Postgresql et SQL Server.
Dans Oracle on utilise '|', postgres utilise '||' et sql server utilise un '+'.
J'ai résolu le problème en postgres par l'ajout de la coutume de l'opérateur '+' à l'appui de la concaténation de chaîne.
Est-il un moyen d'ajouter le même opérateur, d'Oracle à l'appui de la concaténation de chaîne à l'aide de l'opérateur"+".
source d'informationauteur Arun P Johny | 2009-09-03
Vous devez vous connecter pour publier un commentaire.
||
est la Norme SQL opérateur de concaténation (voir SQL 2008: 5.2). L'utiliser, et de se plaindre si ça ne fonctionne pas dans le système que vous utilisez 😉Sérieusement, vous devriez faire d'autres systèmes utilisent
||
pas+
. Non seulement est-il plus standard, mais il est plus facile de accidentellement causer de la confusion si vous utilisez+
surtout si l'un des types doivent être déduit ou et les conversions implicites sont en train d'arriver.Considérer:
'5' + 2
Si le système que vous utilisez ne renvoie pas d'erreur, et
+
signifie à la fois plus et la concaténation), vous pourriez être dedans pour certains résultats confus.Vous ne pouvez pas surcharger les opérateurs dans Oracle. le "+" surcharge ne fonctionne pas de toute façon, depuis Oracle n'conversions de type automatique ('1'+'1'=2).
L'opérateur de concaténation utilisée par Oracle est
||
qui est aussi la norme ANSI-conforme.Il y a aussi le
CONCAT
fonction qui (comme de postgresql 9.0 et SQL Server 2012) est pris en charge par tous les trois des Sgbdr vous en avez besoin pour.Noter que la version Oracle de
CONCAT
n'est pas variadic comme les deux autres. Si vous avez besoin d'enchaîner trois ou plus de chaînes, vous devrez nid:'||' fonctionne certes à Oracle, mais pas apparemment SQL Server. (Pour ceux qui viendront après nous, voici une pierre de rosette pour SQL: Dialectes SQL de Référence)
Si vous êtes à la fixation de scripts SQL, je voudrais envisager la solution suivante:
AVANT:
(sql-fichier contient " + " opérateurs)
APRÈS:
(sql-fichier contient '||' opérateurs, vous devez convertir vos fichiers)
L'idée est que vous commencez avec SQL dans un format et dans le cas particulier, vous utilisez un filtre sur elle pour la transformer à l'autre format. Théoriquement, vous pourriez tourner tous les '+'es dans '||'s, mais depuis une bonne proportion de ceux qui pourraient être numériques-ajouter plutôt que de la chaîne de concaténation, c'est peu probable.
De la complexité de votre filtre dépend de ce que vous faites. Si vous avez des données arbitraires dans votre SQL, alors vous devriez l'obtenir à éviter la substitution dans les chaînes. Mais si vous êtes en train de configurer les vues qu'il sera probablement très bien.
Vous pouvez utiliser la même technique dans les programmes où le SQL est dans les cordes - écrire une fonction dans le programme pour la transformer d'une forme à l'autre.