Extraire des caractères à la droite d'une valeur délimitée par une instruction SELECT
J'ai besoin d'extraire tous les caractères à droite du trait d'union dans le cadre d'une instruction select. Il y aura d'autres colonnes dans le select. Dans la requête ci-dessous, le droit à trois caractères sont sélectionnés à partir de la deuxième colonne. Comment puis-je extraire un nombre indéfini de caractères à droite du séparateur – dans mon cas, un trait d'union? Puis-je utiliser le droit de la fonction? Dois-je utiliser une autre fonction?
Select column1, right(column2,3) as extracted, column3
From myTable
Je suis à l'aide de SQL Server 2008.
- La version de SQL sommes-nous?
Vous devez vous connecter pour publier un commentaire.
Cette question a une base de données de réponse spécifique.
Si vous utilisez SQL Server:
Vous pouvez ajouter un
CASE
déclaration ou de l'utilisationNULLIF()
dans le cas où le trait d'union n'est pas toujours présent:Ou:
Si vous utilisez MySQL, il suffit de changer
CHARINDEX()
àLOCATE()
. Je crois Oracle c'estINSTR()
et les deux premiers paramètres sont activés, d'abord, c'est la chaîne que vous soyez à la recherche, puis la chaîne que vous êtes à la recherche pour.Comment sur:
(Remplacer 8000 avec la définition de la colonne.)
Bien sûr, si la colonne peut ne pas contenir toujours un trait d'union, alors vous pouvez dire:
Si la colonne ne contient pas de trait d'union, vous obtiendrez l'ensemble de la colonne. Si vous voulez exclure ceux de la suite, vous pouvez ajouter un
WHERE
clause:Ou vous pouvez utiliser un
CASE
expression comme la Chèvre de CO la réponse.