2016-10-13 4 views
2

Ich versuche, die CAST oder CONVERT Funktionen in einer SQL-Abfrage wie folgt zu verwenden:Mit CAST oder CONVERT in ENTHÄLT - SQL Server

SELECT * 
FROM [SQL_BMS].[dbo].[GEID] 
WHERE CONTAINS(CONVERT(nvarchar(max), NUID), 'titre') 

oder

SELECT * 
FROM [SQL_BMS].[dbo].[GEID] 
WHERE CONTAINS(CAST(NUID as nvarchar(max)), 'titre') 

aber ich bin immer Fehler:

falsche Syntax nahe dem Schlüsselwort 'CONVERT'

oder

falsche Syntax nahe dem Schlüsselwort 'als'

So wie kann ich meine NUID Spalte von Int zu nvarchar werfen?

+3

Was versuchen Sie zu tun? Wenn NUID eine ganze Zahl ist, wie erwarten Sie, dass es die Zeichenfolge "titre" enthält? –

+0

Mein vorheriger Kommentar war irrelevant. Wie Sie ein TEXT in die Spalte INTEGER finden ?? – gofr1

+0

@Martin Smith Weil ich nicht exclusiv Ganzzahl aber Datum + Text + ... –

Antwort

2

Sie benötigen einen view mit SCHEMABINDING, mit einigen ID und verketteten Spalten erstellen.

CREATE VIEW dbo.[view_GEID] 
WITH SCHEMABINDING 
AS 
SELECT NUID, 
     Col1+Col2+CAST(Col3 as nvarchar(50))... as ConcatColumn 
FROM dbo.GEID 

Dann erstellen full-text Index auf dieser Ansicht. Dann können Sie CONTAINS für Suchzwecke verwenden.

SELECT * 
FROM [SQL_BMS].[dbo].[view_GEID] 
WHERE CONTAINS(ConcatColumn, 'titre') 

Eine andere Möglichkeit ist es, alle Spalten und LIKE müssen verketten verwenden, aber es könnte zu Leistungseinbußen führen.

SELECT * 
FROM [SQL_BMS].[dbo].[GEID] 
WHERE Col1+Col2+CAST(Col3 as nvarchar(50))... LIKE '%titre%' 
+0

danke, deine war die beste Lösung von allen, also bist du die Antwort für mich. –

+0

Großartig, dass es geholfen hat! ;) – gofr1

-1

Try this:

SELECT * 
    FROM [SQL_BMS].[dbo].[GEID] 
    WHERE CONTAINS(CONVERT(nvarchar(max),NUID), 'titre') 
+0

Hartano hat es schon versucht, wenn du meine Frage liest ... –