データベースに、XYZ-13-1234-12345-6789-1 のようなフィールドを持つ列があります。
文字列 XY-6789-1 を返したいので、13-1234-12345 を削除します。
SUBSTRING を使用して最初の文字を取得する方法を知っており、SUBSTRING(RTRIM(myString), LEN(myString), 1) を使用して最後の文字を取得しています。
REVERSE を使用してみましたが、数値が逆に返されるため、6789 ではなく 9876 が返され、うまくいきません。
これが私がこれまでに考え出したことです....それは完全に機能しますが、見た目はひどいです!
SUBSTRING(LTRIM(RTRIM(myString)), 1, 2) + '-' + REVERSE(SUBSTRING(REVERSE(LTRIM(RTRIM(myString))), (CONVERT(INT, CHARINDEX('-', REVERSE(LTRIM(RTRIM(myString))))) + 1), CONVERT(INT, CHARINDEX('-', (SUBSTRING(REVERSE(LTRIM(RTRIM(myString))), (CONVERT(INT, CHARINDEX('-', REVERSE(LTRIM(RTRIM(myString))))) + 1), LEN(myString))))) - 1)) + '-' + SUBSTRING(LTRIM(RTRIM(myString)), LEN(myString), 1) AS NewColumnFormat