Disons que j'ai une chaîne dans laquelle les mots sont séparés par 1 ou plusieurs espaces et je veux utiliser cette chaîne dans et SQL comme condition similaire. Comment puis-je faire mon SQL et lui dire de faire correspondre 1 caractère ou plus d'espace vide dans ma chaîne? Y a-t-il une fauve sauvage SQL que je peux utiliser pour faire cela? P>
laissez-moi savoir p>
9 Réponses :
http://www.techonthenet.com/sql/ike.php < / p>
Les motifs que vous pouvez choisir sont: p>
% vous permet de faire correspondre n'importe quelle chaîne de longueur (y compris la longueur zéro) p>
_ vous permet de correspondre sur un seul caractère p> blockQuote>
Si vous cherchez simplement à obtenir quelque chose avec au moins un blanc / blancspace, vous pouvez faire quelque chose comme le suivant où champ comme "%%" code> p> P> P>
Vous ne pouvez pas faire cela en utilisant comme mais ce que vous pouvez faire, si vous connaissez cette condition peut exister dans vos données, est que vous insérez les données dans la table, utilisez la correspondance d'expression régulière pour la détecter à l'avant et Définissez un drapeau dans une colonne différente créée à cette fin. P>
Une autre façon de correspondre à un ou plusieurs espaces serait d'utiliser Ceci correspondra à un ou plusieurs espaces. P> p> [] code>.
C'est fait comme ça.
Pour autant que je puisse, cela ne correspond que exactement 1 espace de la même manière '%%' code> fait. I.e. 'Bonjour [] Monde' Code> ne correspondra pas là où il y a deux espaces entre bonjour et monde.
i juste
@search_string = 'I want to query this string with a LIKE'
@search_string = ("%"+@search_string+"%").tr(" ", "%")
@my_query = MyTable.find(:all, :conditions => ['my_column LIKE ?', @search_string])
Si votre dialecte le permet, utilisez-la similaire à, ce qui permet une correspondance plus flexible, y compris les quanificateurs d'expression régulière normaux »? '', '*' et '+', avec le groupement indiqué par '()'
where entry RLIKE 'hello +there'
Nice pour MySQL.
Je sais que c'est tard, mais je n'ai jamais trouvé de solution à cela par rapport à un Il n'y a aucun moyen de faire ce que vous voulez dans un pour trouver un ou plusieurs espaces entre Deux mots .. p> comme code> question. SQL comme code>. Ce que vous devriez avoir, c'est utiliser regexp code> et [[: espace:]]] code> à l'intérieur de votre expression. P>
Si la condition: ne fonctionne pas Essayez p> et p> Cette approche est utile dans quelques cas d'utilisation spécifiques, espérons que cela aide. p> p>
Je pense que la question ne demande pas de faire correspondre des espaces mais de faire correspondre deux cordes un modèle et l'autre avec un mauvais nombre d'espaces en raison de fautes de frappe.
Dans mon cas, je dois vérifier deux champs de différentes tables Un préchargé et l'autre rempli dactylés par les utilisateurs, donc parfois, ils ne respectent pas 100% le modèle. p>
La solution consistait à utiliser comme dans la jointure p>
Hum, je ne sais pas s'il y a une solution mais de toute façon, en utilisant comme ou une carte générique dans des requêtes SQL est une mauvaise pratique car elle peut être très lente. Préférez utiliser un moteur d'index comme Lucene pour faire une telle requête
Veuillez afficher votre structure de table et la requête que vous avez essayée jusqu'à présent.
comme '%%' code> correspondrait à n'importe quelle chaîne contenant 1 espaces ou plus ... mais que voulez-vous faire avec ce match? Renvoie juste l'enregistrement? Le convertir en un seul espace?Est-ce que cela répond à votre question? requête MySQL pour retourner des rangées contenant WhitSpace