2011-01-28 5 views
3

Je voudrais créer un index de texte intégral sur plusieurs colonnes qui sont varchars et les nombres. Et il y a le problème avec les chiffres.Créer un index du texte intégral sur le nombre décimal/nombre coloumn, possible ????? (SQL Server 2008)

Est-il vraiment impossible d'ajouter une colonne en tant que nombre ou décimal pour l'index de texte intégral?

J'ai par exemple un article de table:

CREATE TABLE article 
( articleid number(10) not null, 
    articlename  varchar(50)  not null, 
    articlecode1 varchar(50) 
); 

CREATE FULLTEXT CATALOG MyCatalog; 

CREATE FULLTEXT INDEX ON artikel 
    (articleid LANGUAGE 0x0, 
     articlename LANGUAGE 0x0, 
     articlecode1 LANGUAGE 0x0) 
KEY INDEX PK_ARTICLE ON MyCatalog 
WITH CHANGE_TRACKING AUTO; 

Il n'a pas pu être créé, car articleid est un nombre!

Ma solution alternative consiste à créer une deuxième colonne telle que articleidtext varchar en tant que copie de articleid. Ensuite, pour remplir avec un déclencheur.

N'y a-t-il vraiment aucun autre moyen?

J'ai aussi essayé de Cast comme: CAST(articleid AS varchar) LANGUAGE 0x0 ça ne marche pas non plus.

une autre suggestion?

thx ...

+0

Si vous postez du code, des échantillons XML ou des données, ** veuillez ** mettre en surbrillance ces lignes dans l'éditeur de texte et cliquer sur le bouton "code samples" ({}) sur la barre d'outils de l'éditeur pour bien le mettre en forme et la syntaxe le mettre en évidence! –

Répondre

0

Vous ne pouvez pas créer des index en texte intégral sur des colonnes qui sont des nombres. Si vous voulez pouvoir le rechercher en utilisant le texte intégral, vous pouvez convertir la colonne en chaîne. Mais la vraie question est de savoir si vous cherchez un index en texte intégral ou juste un index normal !?

2

Vous pouvez créer une calculée, persistait colonne de type VARCHAR en fonction de votre articleId - cela n'a pas besoin d'être rempli d'un déclencheur ou quoi que ce soit, il représentera toujours le articleId, mais comme une colonne VARCHAR, et ainsi peut être indexé fulltext:

ALTER TABLE dbo.article 
ADD ArticleIDText AS CAST(ArticleID AS VARCHAR(20)) PERSISTED 

maintenant, mettez votre index de texte intégral sur ArticleIDText et tout devrait être très bien ....

+0

Parfait, merci. N'a pas pensé à cela, c'est une bonne alternative à déclencher. à bientôt robert – robert

0

texte intégral fonctionne uniquement avec les types:

char, varchar, nchar, nvarchar, texte, ntext, image, xml et varbinary (max)

Questions connexes