Beiträge vonMarcus Kimpenhaus:
Bereinigen einer Zeichenkette auf alphanumerische Zeichen via SQL
Heute stand ich vor der Problematik einen String welcher nicht-alphanumerische Zeichen beinhalten könnte auf eine alphanumerische Version “zusammenzuschrumpfen”.
Eine Suche bei google lieferte viele Ergebnisse, aber nicht alle halte ich für wirklich sinnvoll bzw. gut gelöst, sicher liefern sie ein Ergebnis – aber warum soll ich zum Lösen dieses Problems eine Tabelle anlegen – wie z.B. hier: Strim Strips Out Non-Alphanumeric Characters oder hier: Sql Server Tips – Removing or Replacing non-alphanumeric characters in strings beschrieben.
Eine tolle Lösung habe ich dann aber doch noch gefunden und zwar in einem Oracle-Forum *hüstel* RE: Remove non-numeric characters.
Das Ganze in eine StoredProcedure eingebaut könnte dann z.B. so aussehen:
CREATE PROCEDURE SetCompactArticleNumberOnArticle
AS
BEGIN
DECLARE CompactArticleNumberCursor CURSOR FOR
SELECT [GUID]
, VersionNo
, ArticleNumber
FROM dbo.Article
WHERE CompactArticleNumber IS NULL
DECLARE @GUID UNIQUEIDENTIFIER
DECLARE @VersionNo INT
DECLARE @ArticleNumber NVARCHAR(22)
DECLARE @CompactArticleNumber NVARCHAR(22)
DECLARE @Position INT
OPEN CompactArticleNumberCursor
FETCH NEXT FROM CompactArticleNumberCursor into @GUID ,@VersionNo , @ArticleNumber
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CompactArticleNumber = @ArticleNumber;
SELECT @Position = PATINDEX('%[^0-9a-Z]%', @CompactArticleNumber);
WHILE @Position > 0
BEGIN
SELECT @CompactArticleNumber = STUFF(@CompactArticleNumber, @Position, 1, '');
SELECT @Position = PATINDEX('%[^0-9a-Z]%', @CompactArticleNumber);
END;
UPDATE Article
SET CompactArticleNumber = @CompactArticleNumber
WHERE [GUID] = @GUID AND VersionNo = @VersionNo;
FETCH NEXT FROM CompactArticleNumberCursor into @GUID ,@VersionNo , @ArticleNumber
END;
CLOSE CompactArticleNumberCursor
DEALLOCATE CompactArticleNumberCursor
END;
GO
Diese StoredProcedure konvertiert, wann immer sie ausgeführt wird, ArtikelNummern in eine alphanumerische Version dieser. Schlüssel dazu sind die beiden T-SQL Funktionen STUFF und PATINDEX.
Wobei STUFF zum Entfernen der nicht-alphnumerischen Zeichen an einer Position verwendet wird und PATINDEX zum Auffinden der nächsten Position eine solchen Zeichens. Einfach aber effektiv und ganz ohne zusätzliche Tabelle. Sehr schön!
Migration von Parallels zu VMWare Fusion
Wer wie ich von Parallels zu VMWare Fusion wechselt und gern seine virtuellen Maschinen konvertieren will wird wahrscheinlich als erste Aktion google anschmeißen und nach Konvertierungsmöglichkeiten suchen.
Dort wird er fast ausschließlich Anleitungen finden, welche sagen, dass man unter der Parallels VM den VMWare Converter installieren soll und somit die Maschine aus Parallels heraus konvertieren kann. [...]
Eager Loading mit dem Entity Framework
Wie ich Manuel gerade schon geschrieben habe: Wer meckert muss auch mal loben können!
Und meiner Meinung nach ist das Eager Loading im Entity Framework akzeptabel gelöst. Eager Laoding ist im Gegensatz zum Lazy Loading das Laden, welches Abhängigkeiten direkt mitlädt und nicht erst bei einem Zugriff tarnsparent nachlädt. Wozu das Ganze?! Nun wie ich finde [...]
Truncate Database – alle Tabellen einer Datenbank löschen
– First disable referential integrity
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
– Drop all tables
EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"
GO
– Now enable referential integrity again
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
Mit Hilfe dieser paar Zeilen lassen sich in einer Microsoft SQL Server Datenbank alle Tabellen löschen, unabhängig von der Reihenfolge und der Constraints [...]
S#arp Architecture
Da Manuel mich ja heute mahnte “auf Deinem blog ist ja auch nichts mehr los” hier noch ein kleiner Tip zu später Stunde:
S#arp Architecture
Dabei handelt es sich um ein Framework, welches eine Basis für das Erstellen von Web-Applikationen mit Hilfe von ASP.NET MVC und NHibernate bildet.
Beide Frameworks sowohl ASP.NET MVC als auch NHibernate halte ich [...]