2016-07-11 7 views
0

Ich habe die folgende Abfrage bekam mit über die folgende Tabelle Struktur:T-SQL-Anweisung, wo nicht funktioniert

select * 
from [dbo].[Interpurchase_Intervals_1] 
where client_id = '24' 

Tabellenstruktur:

Client_ID nvarchar(10, null) 
Customer_ID nvarchar(max, null) 
Gradient decimal ((18,5), null) 

Die Abfrage:

select distinct [Client_ID] 
from [dbo].[Interpurchase_Intervals_1] 

Rücksendung:

Client_ID 
---------- 
13 
24 
    8 

Die Abfrage:

select * 
from [dbo].[Interpurchase_Intervals_1] 

kehrt:

classification Client_ID 
---------------------------- 
     1    24 
     2    24 
     1    13 

Allerdings, wenn ich diese Abfrage ausführen:

select * 
from [dbo].[Interpurchase_Intervals_1] 
where client_id = '24' 

ich eine leere Ergebnismenge erhalten.

Ich sehe nicht, warum die Daten Filterung von client_id = ‚24‘ gibt einen leeren Datensatz, wenn es zurück:

classification Client_ID 
------------------------ 
    1    24 
    2    24 
+2

Was ist der Typ der Spalte "Client_ID"? Mischen Sie ein 'int' für ein' varchar'? Oder, wenn die Spalte wirklich 'varchar' ist, könnten Sie ein Whitespace-Problem haben? –

+1

Ist das ein Leerraum, wenn ich das tue: wähle * aus [dbo]. [Interpurchase_Intervals_1] wo client_id wie '24% 'Es funktioniert. Irgendeine Idee, wie man es repariert? –

Antwort

0

Wenn Sie in der Spalte Client_ID unerwünschte Leerzeichen haben, das Beste, was wäre zu tun sei es zu entfernen. Wenn Sie das nicht tun können, dann wäre eine Option, um es in Ihrer Abfrage zu behandeln:

SELECT * 
FROM [dbo].[Interpurchase_Intervals_1] 
WHERE LTRIM(RTRIM(client_id)) = '24'