В следующем sproc у меня возникают проблемы с преобразованием моего id в bigint при возврате. Идентификатор имеет форму {letters} {numbers}, где {буквы} могут иметь длину 2 или 3 символа, а {numbers} может быть любой длины. Я пытаюсь сначала захватить числа из своего идентификатора, а затем преобразовать их в bigint и вернуть это вместо поля id. Мое понимание для SUBSTRING заключается в том, что я могу использовать PATINDEX для получения первого индекса, где встречается число, и захватить подстроку из этого индекса. Я установил длину до 50 только потому, что не знаю, как долго фактический идентификатор человека и 50 максимальная длина для [id] для начала.Ошибка преобразования varchar в bigint (CONVERT, SUBSTRING, PATINDEX)
ALTER PROCEDURE [dbo].[GetSummoner]
@Id varchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT
CONVERT(bigint, SUBSTRING([id], (PATINDEX('%[^0-9]%', [id])), 50)) AS id
,[name]
,[modify_date]
,[profile_icon_id]
,[revision_date]
,[summoner_level]
FROM [Summoners]
WHERE [id][email protected]
END
Edit: Сообщение об ошибке: "Ошибка преобразования типа данных VARCHAR в BigInt."
И какая у вас ошибка? –
@ AllanS.Hansen О, извините. Ошибка в заголовке («Ошибка преобразования типа данных varchar в bigint.») –
И будет ли идентификатор «AA12345678» примером @ID, который создает проблему? –