Je veux prendre le 01 code> partie d'une chaîne abcd_01 code> à l'aide de SQL. Quelle devrait être la requête pour cela, où la longueur avant le _ code> varie? C'est-à-dire qu'il peut être abcde_01 code> ou ab_01 code>. Fondamentalement, je veux une partie après le _ code>. P>
4 Réponses :
Pour obtenir 01 à partir d'abcd_01, vous devriez écrire de cette façon (en supposant que le nom de la colonne est COL1) P>
Sélectionnez la sous-chaîne (COL1, -2) du tableau P> blockQuote>
Cela vous donnera deux derniers caractères. p>
Sur quels moteurs de DB cela fonctionnerait? Non SQL Server, Oracle utilise des substrations, etc., etc.
Si ce sont toujours les 2 derniers caractères, utilisez droite (mystring, 2) code> dans la plupart des dialectes SQL p>
Droite n'est supporté que par SQL Server et MySQL. Consultez ma réponse - Il n'y a pas de balle d'argent pour la mise en service constante Nom de la fonction et la syntaxe entre les bases de données.
C'est l'un de ces exemples de la manière dont la fonctionnalité similaire entre SQL et les différentes extensions, mais sont suffisamment différentes que vous ne pouvez pas garantir la portabilité entre toutes toutes les bases de données.
Le Mot-clé de sous-chaîne, Utilisation de la syntaxe PostgreSQL (aucune mention de correspondance de modèle) est ANSI-99 . Pourquoi cela les a pris si longtemps, je ne sais pas. P>
Le creux de votre besoin est d'obtenir une sous-chaîne de la valeur de colonne existante, vous devez donc savoir quelle est la fonction de sous-chaîne de base de données Appelé. P>
SELECT SUBSTR('abcd_01', LENGTH('abcd_01') - 1, 2)
Très bonne réponse. Petit détail: Je pense que les sépérateurs seraient mieux au-dessus des en-têtes. Maintenant, l'en-tête est à proximité de la réponse précédente IMO.
select substring(names,charindex('_',names)+1,len(names)-charindex('_',names)) from test
Pourriez-vous élaborer un peu sur votre réponse?
Est-ce toujours les deux derniers caractères de la chaîne?
oui..it est deux derniers caractères
Voulez-vous interroger tous les tuples avec une valeur dont certains sous-chaînes sont _01?