2015-10-29 1 views
1

J'utilise Sql Server 2014 Express et j'ai une colonne varchar (max). Dans certains cas, j'ai besoin d'utiliser un caractère spécial pour donner une signification particulière à ce champ.Quel caractère spécial est le mieux pour la recherche de texte?

J'ai par exemple cette valeur: "123.456.234", mais je voudrais utiliser quelque chose comme ça: "678. * 789.123". Dans ce second cas, le * a la signification que la valeur 789 n'est pas une valeur standard (valeur standard dans ma logique d'application) et les deux autres valeurs 678 et 123 sont standard.

Mais je ne sais pas si en utilisant "*" j'aurai des problèmes quand je voudrai chercher en utilisant cette colonne dans les requêtes. Je peux utiliser n'importe quel caractère, je veux seulement séparer la signification d'une valeur particulière dans la chaîne.

Merci beaucoup.

+0

Vous devriez mettre la signification dans une autre colonne. Ce sera beaucoup plus facile pour le serveur et il aura la possibilité d'utiliser des index. –

+2

Vérifiez SQL Server [caractère générique] (https://msdn.microsoft.com/en-us/library/ms179859.aspx). – qxg

+1

@JulienVavasseur Vous ne pouvez pas indexer un varchar (max) – Paparazzi

Répondre

1

La vitesse de recherche d'un caractère à un autre est la même.

Si vous utilisez comme alors si vous utilisez l'un des caractères génériques, vous devriez y échapper. Mais * n'est pas un caractère générique.

S'il s'agit de trois valeurs différentes, elles ne doivent pas figurer dans la même entrée. Recherchez la troisième forme normale (3NF).

Varchar (max) ne peut pas être indexé.

+0

Le texte est le chemin d'un nœud dans une arborescence, chaque nœud ayant le chemin complet vers ces nœuds. Cependant, certains nœuds, sa position peut avoir une considération différente, et cela affecte les nœuds enfants. Donc, un moyen d'éviter d'avoir à chercher tous les ancêtres pour vérifier si quelqu'un est un nœud spécial, je pensais yo utiliser ce caractère dans le chemin, donc je peux vérifier dans le nœud s'il contient ce personnage, puis a un ancêtre spécial . –

+1

OK puis revenir à la vitesse de recherche d'un caractère à l'autre est le même – Paparazzi

+0

Je suis d'accord, mais plusieurs valeurs dans une seule intersection viole 1NF et non 3NF. :) –