Z pewnością można to zrobić, ale SQL jest zaprojektowany wokół aksjomatu wartości atomowych (tj. pierwsza forma normalna ). Dzielenie pola prawie nigdy nie jest konieczne. Mniej więcej w dobrze zaprojektowanej bazie danych będziesz potrzebować go używać tylko z datami, w których możesz chcieć pracować tylko z miesiącem lub rokiem pola daty. Chociaż na pewno znajdziesz bazy danych zaprojektowane przez jakiegoś idiotę, z którymi jesteś zmuszony pracować, które naruszają tę podstawową koncepcję, złym pomysłem jest zacząć od próby wymyślenia, jak pracować z tymi projektami.
Ponadto ostatni krok „przechowuj w tej komórce 239” sprawia, że wydaje mi się, że nadal patrzysz na bazy danych jak na arkusze kalkulacyjne. Oni nie są. Innym kluczowym elementem bazy danych jest to, że kolejność wierszy nie jest ważna. Z drugiej strony pola są zawsze powiązane z innymi polami w tym samym wierszu. Możesz ustawić wartość jednego z pól na wartość, w której pole identyfikatora tego rekordu to 239, ale generalnie nigdy nie będziesz dbał o to, że rekord jest 239.
To powiedziawszy, oto zapytanie, które zrobi to, czego chcesz:
Założenie:format pola to „11a22 b”. To znaczy dwucyfrowa liczba, po której następuje litera, po której następuje kolejna dwucyfrowa liczba, prawdopodobnie poprzedzona spacją i literą „b”.
SELECT CAST(SUBSTRING(Value,1,2) AS INT)
* CAST(SUBSTRING(Value,3,2) AS INT)
+ CASE RIGHT(Value,1) WHEN 'b' THEN -1 ELSE 0 END
FROM MyTable