2016-05-19 7 views
0

Ich bin auf einer Abfrage zu arbeiten, wo ich will nur Computernamen zurück, wo das siebte Zeichen „K“Suche nach Maschinen mit einem Zeichenspiel in einer bestimmten Zeichenfolge Position

select distinct s.Name0 as 'Computer Name', 
s.User_Name0 as 'Last Logon user', 
os.Caption0 as 'Operating System', 
u.Full_User_Name0 as 'Full User Name', 
s.AD_Site_Name0 as 'Site' 


from v_R_System s 
full outer join v_R_User u on u.User_Name0 like s.User_Name0 
full outer join v_GS_OPERATING_SYSTEM os on os.ResourceID = s.ResourceID 
where os.Caption0 like '%Enterprise%' 
and os.Caption0 not like '%server%' 

Ich versuche zurück Alle Workstations, auf denen Unternehmen ausgeführt werden, haben ein "K" als 7. Zeichen zusätzlich zu meinen anderen beiden where-Anweisungen.

+0

Welche Datenbank benutzen Sie? – Chuck

+0

Es ist SQL Server 2012 und ich verwende SQL Server Management Studio – Drew

+0

Es ist gute Praxis, eckige Klammern um Namen mit Leerzeichen zu verwenden. Die Verwendung von Namen mit Leerzeichen ist keine gute Idee. – Chuck

Antwort

2

Die vollständige Antwort hängt von der SQL-Dialekt, aber Sie werden wahrscheinlich wollen so etwas wie T-SQL der CHARINDEX Funktion in Ihrer where-Klausel verwenden:

where os.Caption0 like '%Enterprise%' 
and os.Caption0 not like '%server%' 
AND CHARINDEX('K', s.Name0) = 7 

This is a great article that details your other string-manipulation options in T-SQL, von denen einige auf andere Dialekte gelten.

+0

Danke, aus irgendeinem Grund gibt die Abfrage nur 35 oder so Maschinen zurück. Ich weiß, dass es wesentlich mehr Maschinen gibt als dieses Windows-Unternehmen mit 'K' als 7. Zeichen. Irgendwelche Ideen, was ich falsch machen könnte? – Drew

+0

Versuchen Sie, die anderen Teile Ihrer WHERE-Klausel zu entfernen. Möglicherweise stellen Sie fest, dass das Feld "os.Caption0" nicht auf eine Weise ausgefüllt ist, die Ihren Annahmen entspricht. Wenn Sie diese Filter entfernen, können Sie sich die Daten ansehen und herausfinden, wie Sie Ihre Abfrage anpassen können. – 3bh