-1
votes

Sélectionnez l'endroit où la première lettre commence par «A%» ou «B%» ou «C%» ou «F%» ... dans MySQL

Je comprends que ou (||) peut être utilisé plusieurs fois, mais y a-t-il un code plus court pour cela? Lorsque j'utilise dans , Cela ne donne pas la bonne réponse.


4 commentaires

Pouvez-vous donner un exemple de ce que vous voulez dire? Ce n'est pas complètement clair.


@Nick j'ai plusieurs cordes dans une colonne et je veux imprimer toutes les chaînes commençant par des caractères spécifiques. Sélectionnez * à partir de livres où l'auteur_lname comme 'C%' || Author_lname comme 's%' donc sur et ainsi de suite.


@Sebastianbrosch pourquoi avez-vous supprimé votre réponse, c'était un bon?


@Nick pour moi de bonnes réponses sont des réponses correctes et acceptées. Je l'impose et étendre avec des alternatives. Il y a tellement de façons de résoudre ce problème. Personnellement, j'utiliserais le gauche et inférieur , mais votre solution à l'aide de Regexp est meilleure (je suppose que dans la performance).


4 Réponses :


2
votes

Vous pouvez utiliser la solution suivante à l'aide de Gauche code> avec dans code>: xxx pré>

Pour vérifier l'insensibilité insensible, vous pouvez utiliser ce qui suit, en utilisant inférieur code> : P>

SELECT * 
FROM books
WHERE FIND_IN_SET(LOWER(LEFT(author_lname, 1)), 'a,b,c,f') > 0


2 commentaires

@Volodymyr Methody of RLIt fonctionne plus rapidement ou la fonction dans la fonction donnée par vous?


La meilleure réponse n'est pas toujours l'acceptée. Je ne suis pas sûr, ce qui serait plus rapide de ceux-ci et de la réégalité ou même de la réponse @forpas, mais vous avez proposé 3 bonnes alternatives.



2
votes

Vous pouvez utiliser des expressions régulières avec RLIt xxx

https://dev.mysql.com/doc/refman/8.0/fr/regexp.html


0 commentaires

2
votes

Vous pouvez utiliser un regexp pour correspondre au premier caractère. Ajoutez simplement les caractères que vous souhaitez faire correspondre au début du nom sur le réglage de l'intérieur du [] : xxx

Démo sur dbfiddle


0 commentaires

1
votes

Il existe de nombreuses façons d'obtenir le résultat que vous voulez et l'un d'entre eux est-ce:

SELECT * FROM tablename WHERE 'abcf' LIKE CONCAT('%', LEFT(mycolumn, 1), '%')


0 commentaires