To może być proste, ale nie jestem mistrzem SQL, więc się gubię. Rozumiem, że wykonuje zapytanie SQL i wykonuje je w określonej kolejności, co moim zdaniem jest dlaczego ta kwerenda nie działa:Sprawdź, czy pole jest numeryczne, a następnie wykonaj porównanie tylko na tych polach w jednej instrukcji?
select * from purchaseorders
where IsNumeric(purchase_order_number) = 1
and cast(purchase_order_number as int) >= 7
Większość pól purchar_order_number są numeryczne, ale wprowadzamy te alfanumerycznych niedawno. Dane, które próbuję uzyskać, to sprawdzenie, czy "7" jest większe niż najwyższy numer numeru zakup_order.
Funkcja numeryczna() odfiltrowuje pola alfanumeryczne porządku, ale robi późniejsze porównanie rzucania rzuca ten błąd:
Conversion failed when converting the nvarchar value '124-4356AB' to data type int.
Nie pytam, co oznacza, że błąd, to jest oczywiste. Pytam, czy istnieje sposób, aby osiągnąć to, co chcę w pojedynczej kwerendzie, najlepiej w klauzuli where z powodu ograniczeń ORM.
Ponieważ jest to tylko jedna cyfra, można po prostu powiedzieć 'I purchase_order_number>„7'' –
można podać schemat dla 'tabeli purchaseorders' tym indeksów? Próbuję zbudować repro - obecnie mogę uzyskać komunikat o błędzie z przykładem ShyJ, ale nie z twoją. –