11
votes

SQL comme personnage spatial sauvage

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?

laissez-moi savoir


4 commentaires

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 '%%' 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


9 Réponses :


1
votes

http://www.techonthenet.com/sql/ike.php < / p>

Les motifs que vous pouvez choisir sont:

% vous permet de faire correspondre n'importe quelle chaîne de longueur (y compris la longueur zéro)

_ vous permet de correspondre sur un seul caractère


0 commentaires

7
votes

Si vous cherchez simplement à obtenir quelque chose avec au moins un blanc / blancspace, vous pouvez faire quelque chose comme le suivant où champ comme "%%"


0 commentaires

3
votes

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.


0 commentaires

4
votes

Une autre façon de correspondre à un ou plusieurs espaces serait d'utiliser [] . C'est fait comme ça. XXX

Ceci correspondra à un ou plusieurs espaces.


1 commentaires

Pour autant que je puisse, cela ne correspond que exactement 1 espace de la même manière '%%' fait. I.e. 'Bonjour [] Monde' ne correspondra pas là où il y a deux espaces entre bonjour et monde.



2
votes

i juste remplacez les caractères blancheurs avec '%' fort>. Disons que je veux faire une question comme une requête forte> sur une chaîne comme celle-ci 'Je veux interroger cette chaîne avec un em>

@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])


0 commentaires

6
votes

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'


1 commentaires

Nice pour MySQL.



5
votes

Je sais que c'est tard, mais je n'ai jamais trouvé de solution à cela par rapport à un comme question.

Il n'y a aucun moyen de faire ce que vous voulez dans un SQL comme . Ce que vous devriez avoir, c'est utiliser regexp et [[: espace:]]] à l'intérieur de votre expression.

pour trouver un ou plusieurs espaces entre Deux mots .. xxx


0 commentaires

-2
votes

Si la condition: xxx

ne fonctionne pas Essayez xxx

et xxx

Cette approche est utile dans quelques cas d'utilisation spécifiques, espérons que cela aide.


0 commentaires

1
votes

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.

La solution consistait à utiliser comme dans la jointure xxx / p>


0 commentaires