Oracle 'printf' équivalent
Est-il un équivalent ou de substitution à la suivante?
SELECT mix_type || ' (' || mix_num || ')' as description
FROM acid_batch
WHERE mix_num < 10
N'Oracle ont quelque chose comme printf mise en forme de style?
SELECT printf("%s (%s)", mix_type, mix_num) as description,
FROM acid_batch
WHERE mix_num < 10
source d'informationauteur Steven
Vous devez vous connecter pour publier un commentaire.
N'ya pas de Oracle intégré les fonctions qui s'appliquent à une chaîne de mise en forme de cette manière. Bien qu'il serait facile d'écrire une fonction personnalisée pour cet exemple précis, l'écriture d'un PL/SQL de mise en œuvre de printf serait difficile.
Si vous avez un besoin fréquent pour ce faire, vous pourriez peut-être écrire un Oracle fonction qui encapsule un Java appel à une meilleure gestion de chaîne d'environnement.
Le plus proche de la norme approximation de printf pour Oracle, je pense,utl_lms.format_message. Toutefois, cela ne marchera pas dans les instructions SQL, c'est, c'est ok:
mais cela donne un ORA-00902: invalid type de données erreur:
Simplement une autre idée pour vous: j'ai trouvé, REMPLACER, pour être utile pour ce genre de chose, surtout quand le modèle est complexe:
Le seul inconvénient est que vous devez ajouter autant de
REPLACE(
'comme il y a des variables à remplacer - mais au moins, vous avez seulement besoin d'avoir une par variable, quel que soit le nombre de fois qu'il apparaît dans le modèle.(NOTE: Il n'y a pas de signification particulière à l'utilisation de "%" comme séparateur, c'est juste un personnel convention de la mine - vous pouvez choisir un modèle différent, par exemple
<mix_type>
ou[mix_type]
)Pour ce cas particulier, il semble comme overkill, mais dans certains cas, il peut rendre les choses beaucoup plus facile, par exemple:
Comparer ci-dessus avec:
J'ai fait un simple moteur de template nommé ora_te (sur GitHub) pour Oracle SQL /PLSQL.
Avec l'aide de votre objectif peut être atteint par les moyens suivants:
Noneffective mise en œuvre avec plusieurs parsings de la chaîne de modèle:
Une mise en œuvre efficace avec un temps de compilation (l'analyse):
BTW, il prend également en charge des espaces réservés nommés.
Vous pouvez le résoudre dans le select.
vous devriez également prendre un regard sur les fonctions
to_char
to_date
to_number
qu'ils donnent à votre une granularité plus fine sur la façon dont vous voulez que les choses représentées.