Tag: "zeichenfolge"

Spaltenwerte als kommaseparierte Liste zurückgeben

Posted on Sep 21, 2004 von in SQL Server

Wie so oft mag man sich fragen, ob dies eher die Aufgabe des Clients als die des Server ist, aber da man häufig derartige Fragestellungen beobachten kann, hier an dieser Stelle vielleicht ein paar Lösungsansätze zu folgendem Problem:

Ganze Geschichte »

Zahl rechts-oder linksbündig mit 0 formatieren

Posted on Aug 9, 2004 von in SQL Server

Die Präsentation von Informationen aus der Datenbank ist imho eher Sache des Clients als die des Servers. Solche Aufgaben gehören zum Handswerkzeug jedes Front-End und sind dort schnell und einfach erledigt.

Falls jedoch, aus welchen Gründen auch immer, dies auf dem Server erledigt werden muss, kann vielleicht folgendes Skript gute Dienst leisten:

DECLARE @MeineZahl INT
SET @MeineZahl = 99
SELECT 
	RIGHT(REPLICATE('0',10) + CAST(@MeineZahl AS VARCHAR(10)),10) AS Rechtsbündig
	, LEFT(CAST(@MeineZahl AS VARCHAR(10)) + REPLICATE('0',10) ,10) AS Linksbündig

Rechtsbündig Linksbündig 
------------ ----------- 
0000000099   9900000000

(1 row(s) affected)

Für den Lazycoder könnte das rechtbündige Auffüllen auch noch folgendermaßen aussehen:

DECLARE @MeineZahl INT
SET @MeineZahl = 99
SELECT REPLACE(STR(@MeineZahl,10), ' ', '0')

Rechtsbündig          
---------------------- 
0000000099

(1 row(s) affected)

String Truncation

Posted on Jul 12, 2004 von in SQL Server

SQL Server konvertiert Daten (und schneidet diese notfalls auch ab) wo dies angebracht erscheint. Wenn zu einem VARCHAR Wert konvertiert wird explizit oder implizit) und dieser zu gross für die Spalte ist, wird SQL Server * einfügen.
Weitere Informationen stehen in der Onlinehilfe unter CAST und CONVERT.
Danke an David Burrows für diesen Tip.

CREATE TABLE #test
(
col1 VARCHAR(2)
)
GO
INSERT INTO #test(col1) VALUES('15')
INSERT INTO #test(col1) VALUES(15)
INSERT INTO #test(col1) VALUES('157')
INSERT INTO #test(col1) VALUES(157)

SELECT
*
FROM
#test
DROP TABLE #test



(1 row(s) affected)


(1 row(s) affected)

Server: Nachr.-Nr. 8152, Schweregrad 16, Status 9, Zeile 3
Zeichenfolgen- oder Binärdaten werden abgeschnitten.
Die Anweisung wurde beendet.

(1 row(s) affected)

col1
----
15
15
*

(3 row(s) affected)

Inline Split mittels CHARINDEX

Posted on Jul 12, 2004 von in SQL Server

Diese Frage ist auch ein Kandidat für die "Häufigste Frage". Dabei kann man sehr häufig die abstrusesten Antworten beobachten. Natürlich kann man dieses Problem mit Hilfe eines Cursors lösen. Stellt sich nur nachher die Frage, wie man das Problem des Cursors los wird.

Ganze Geschichte »

Nicht-Unicode Spalten ermitteln

Posted on Jul 12, 2004 von in SQL Server
SELECT
OBJECT_NAME(Id) as [Table]
, name as [Column]
, TYPE_NAME(xusertype) as Type
FROM SysColumns
WHERE TYPE_NAME(xusertype)
IN ('varchar','char')
AND ID IN
(SELECT ID
FROM SysObjects
WHERE xtype = 'U')
ORDER BY OBJECT_NAME(Id), Name

Die Ergebnismenge wird hier nicht wiedergegeben, da sie in der Regel sehr umfangreich ist. Ändert man

 WHERE xtype = 'U') 

in

 WHERE xtype = 'P') 

erhält man das Ergebnis für Gespeicherte Prozeduren.

  • 1
  • 2