[MSSQL] Konwersja tekstu na liczbę i problem

0

Witam, mam sobie tabelę, gdzie jest sobie kolumna, która jest Varcharem. Jednak wpisuję tam zarówno tekst, jak i tekstową reprezentację liczb(np: '123')

Teraz piszę zapytanie, które ma mi porównać pewną wartość z tą z tej tabeli:

select (case when val>=(select myCol from tabela where ID = 15) then 1 else 0 end)

myCol to oczywiście wyżej wspomniana kolumna.
Takie zapytanie zwraca błąd: "Operand type clash: text is incompatible with int"

Dla mnie jest to dziwne, bo np:

if 5>(select '4') print 'Większe' else print 'Mniejsze'

działa.

W każdym razie chciałem użyć CASTa. I co się okazalo? Że nie mogę, bo dostaję błąd:
"Explicit conversion from data type text to int is not allowed"

Jak to zrobić?

0

a jak w tej kolumnie będziesz miał 'dupa_maryna' (bo może - przecież to varchar) to co wg ciebie ma być po konwersji na inta?

0
Misiekd napisał(a)

a jak w tej kolumnie będziesz miał 'dupa_maryna' (bo może - przecież to varchar) to co wg ciebie ma być po konwersji na inta?

Zauważ, że daję warunek. Dla przykładu ID = 15. I jestem pewien, że w tym polu zawsze będę miał liczbę.

OK, chyba po prostu zrobię funkcję tabelaryczną.

0

pewnym to możesz być jedynie tego, że kiedyś umrzesz...
SZBD nie jest tego pewny i co on ma biedny zrobić.

BTW dostałeś komunikat
Explicit conversion from data type text to int is not allowed
a z text nie da się na wartość numeryczną przekonwertować
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
spróbuj najpierw na varchar a potem na numeric|int|czy co tam chcesz

0

Czegoś nam chyba nie powiedziałeś ;)

U mnie takie coś śmiga bez zająknięcia:

CREATE TABLE dbo.test_tab
(
  a varchar(4),
  b int
);

INSERT INTO dbo.test_tab (a, b) VALUES ('a', 2), ('2', 1), ('b', 2);

SELECT CASE WHEN 2 >= (SELECT t.a FROM dbo.test_tab t WHERE b = 1) THEN 1 ELSE 0 END;

/edit: aha czyli wszystko jasne nie miałeś tam varchar tylko text...

wg tej tabeli nie można castować text na int:
user image

0

Przepraszam za wprowadzenie w błąd, faktycznie mam tam text. No cóż, zrobiłem sobie funkcję tabelaryczną i jest ok.

1 użytkowników online, w tym zalogowanych: 0, gości: 1