TSQL - wie man herausfindet, ob eine Spalte ein Leerzeichen hat char(32)
?
select *
from [sometable]
where CHARINDEX(' ', [somecolumn]) > 0
nicht funktioniert? Irgendwelche Ideen?
TSQL - wie man herausfindet, ob eine Spalte ein Leerzeichen hat char(32)
?
select *
from [sometable]
where CHARINDEX(' ', [somecolumn]) > 0
nicht funktioniert? Irgendwelche Ideen?
Sie müssen CHAR-Spalten rtrimmen.
CHAR-Spalten werden auf der rechten Seite mit Leerzeichen aufgefüllt, bis die maximale Länge erreicht ist.
RTRIM hilft, Fehlalarme zu vermeiden, wenn Zeichenketten gespeichert werden, die kürzer als die maximale Länge sind.
select * from [table] where rtrim(col) like '% %'
create table dropme
(foo char(32))
insert into dropme values('nospaces')
insert into dropme values('i have a space')
insert into dropme values('space bar')
select replace(foo,' ','|') from dropme
where foo like '% %'
nospaces
i|have|a|space
space|bar
select replace(foo,' ','|') from dropme
where rtrim(foo) like '% %'
i|have|a|space
space|bar
@CodeBlend CHAR-Spalten werden auf der rechten Seite mit Leerzeichen aufgefüllt, bis die maximale Länge erreicht ist. RTRIM hilft, Fehlalarme zu vermeiden, wenn Zeichenketten gespeichert werden, die kürzer als die Maximallänge sind. LTRIM hilft nicht dabei, dies zu vermeiden, und kann sogar zu falsch negativen Ergebnissen führen, wenn Sie Leerzeichen am Anfang eines Wertes finden wollen.
Das folgende Beispiel soll verdeutlichen, wie Sie dies erreichen können.
create table #tableTest
(
someData varchar(100) not null
);
insert into #tableTest(someData) values('dsadsa');
insert into #tableTest(someData) values('fdssf 432423');
insert into #tableTest(someData) values('432423fsdv');
insert into #tableTest(someData) values('321 jhlhkj 543');
select *
from #tableTest;
select *
from #tableTest
where charindex(char(32),someData) > 0;
drop table #tableTest;
Was meinen Sie mit "funktioniert nicht"? Für mich funktionieren beide Wege:
SELECT ''''+a+'''' FROM(
SELECT 'asd fgh' AS a UNION ALL
SELECT ' fgh' AS a UNION ALL
SELECT 'asd ' AS a UNION ALL
SELECT 'asfdg') As t
WHERE a LIKE '% %'
---------
'asd fgh'
' fgh'
'asd '
SELECT ''''+a+'''' FROM(
SELECT 'asd fgh' AS a UNION ALL
SELECT ' fgh' AS a UNION ALL
SELECT 'asd ' AS a UNION ALL
SELECT 'asfdg') As t
WHERE CHARINDEX(' ', a) > 0
---------
'asd fgh'
' fgh'
'asd '
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Welche Werte funktionieren und welche nicht?
0 Stimmen
Welcher Typ ist das Feld somecolumn?