Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MSSQL 2008 LIKE ..0-9.. liefert auch Ergebnisse mit Buchstaben

Frage Entwicklung Datenbanken

Mitglied: diavolo

diavolo (Level 1) - Jetzt verbinden

14.11.2014, aktualisiert 16:27 Uhr, 967 Aufrufe, 7 Kommentare, 1 Danke

Hallo an alle Datenbankgurus

wir haben eine Artikel-Tabelle mit dem Feld artikel nvarchar(22).

Ich möchte mit

select artikel from artikel
where artikel like N'24%[0123456789]'

nur die Datensätze selektieren,
die nach der "24" nur noch numerische Zeichen stehen haben.
MSSQL 2008 liefert mir aber auch z.B.:

244922/6
245285ST10
245285ST8
245286ST6
245286ST7
24-5422804
246079 Blatt 10
246605702_1
246913700 bis Mai 2011
246913816 bis Mai 2011
246977-001
24-7647-001

selbst mit zusätzlich ... and artikel like N'24%[^a-z]%[^A-Z]%[0-9]%[^a-z]%[^A-Z]'
bekomme ich das selbe Ergebnis.

mit ..and ISNUMERIC(artikel)=1 fallen obige Ergebnisse raus, aber das sollte doch nicht die Lösung sein.

Ich finde auch keine passende SET-Anweisung.
Was mache ich da falsch?

Grüße
Mitglied: Doskias
LÖSUNG 14.11.2014, aktualisiert um 16:27 Uhr
Warum sollte das nicht die Lösung sein?

mit like sagst du ihm ja, dass es änlcih sein soll. SQL-Anweisungen schreiben ist nicht meine Stärke, aber ichv erstehe sie ganz gut und mich überrascht das Ergebnis nicht. Übersetzen wir das mal in Umgangssprache, sagst du ihm:

"Zeige mir die Datensätze, die mit 24 beginnen und dann Zahlen und sowas kommen". Dadurch bekommst du die änlichen Werte auch zurück, die du nicht willst. Wie gesagt bin ich da nicht so fit, aber hast du schon einmal andere Vergleichsoperatoren ausprobiert? Zum Beispiel anstelle des Like ein IS eingesetzt?
Bitte warten ..
Mitglied: AndreasHoster
LÖSUNG 14.11.2014, aktualisiert um 16:27 Uhr
RTFM.

Laut MS Doku (http://msdn.microsoft.com/de-de/library/ms179859.aspx):

% = Eine Zeichenfolge aus null oder mehr Zeichen
[ ] = Beliebiges einzelnes Zeichen im angegebenen Bereich ([a-f]) oder in der angegebenen Menge ([abcdef]).

Wo steht da, daß %[] als beliebige Anzahl Zeichen der angegebenen Menge gesucht wird?
% steht für eine beliebige Zeichenfolge, also auch mit Buchstaben.

Also beliebig viele Zahlen wird nur mit isnumeric gehen.
Bitte warten ..
Mitglied: diavolo
14.11.2014 um 16:21 Uhr
Danke, hast mir die Augen geöffnet
Glaub mir, ich hab TFM mehrfach gelesen, aber eben immer falsch interpretiert.

Außerdem würde ich schwören, dass ich bei msdn ein Beispiel gesehen habe um rein numerische Postleitzahlen
mit ".. like '%[1-9] " zu selektieren, finde ich aber nicht mehr.

isnumeric liefert halt auch bei "24123.123" TRUE,
die Sätze bekomme ich natürlich auch weg, ist halt nicht so elegant wie mein falscher Ansatz.
Bitte warten ..
Mitglied: diavolo
14.11.2014, aktualisiert 17.11.2014
Danke, habe fälschlicherweise angenommen, dass %[1-9] bedeutet beliebig viele Zeichen aus [1-9].
Wie vorhin geschrieben ist isnummeric auch nicht die alleinige Lösung.
Bitte warten ..
Mitglied: MadMax
LÖSUNG 14.11.2014, aktualisiert 17.11.2014
Hallo diavolo,

das Thema ist zwar schon abgeschlossen, aber hier noch eine Lösung ohne isnumeric, die auch gleich die Kommazahlen rausholt:
01.
select	* 
02.
from	artikel 
03.
where	artikel like '24%[1-9]%' and	-- alles was mit '24' anfängt und hintendran Ziffern hat 
04.
	artikel not like '%[^1-9]%'	-- alles ausschliessen, was andere Zeichen als Ziffern hat
Gruß, Mad Max
Bitte warten ..
Mitglied: diavolo
17.11.2014 um 09:46 Uhr
Danke Mad Max,
das ist eindeutig die sauberste Lösung (allerdings mit ..[0-9]...)


Gruß diavolo
Bitte warten ..
Mitglied: MadMax
17.11.2014 um 13:19 Uhr
Natürlich [0-9], war ne lange Woche

Gruß, Mad Max
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst NTP Server auf einem Windows Server 2008 R2 DC standardmäßig schon drauf? (11)

Frage von M.Marz zum Thema Windows Server ...

C und C++
gelöst Anzahl der Buchstaben in einem String Element Array C++ (3)

Frage von Protected zum Thema C und C ...

Windows Server
Windows Server 2008 R2 Aero-Design auf Remote Desktop geht nicht (3)

Frage von Motherboard33 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...