Как отформатировать числовой столбец как номер телефона в SQL

<select> элемент сгенерирован приложением, и моделирование не является частью спецификации CSS/HTML.

необходимо было бы фальсифицировать его с собственным DIV и наложить его сверху существующего или создать собственное управление, эмулирующее ту же функциональность.

24
задан the Tin Man 2 June 2017 в 23:02
поделиться

2 ответа

Это должно сработать:

UPDATE TheTable
SET PhoneNumber = SUBSTRING(PhoneNumber, 1, 3) + '-' + 
                  SUBSTRING(PhoneNumber, 4, 3) + '-' + 
                  SUBSTRING(PhoneNumber, 7, 4)

Включено предложение Кейна, вы можете вычислить форматирование телефонного номера во время выполнения. Один из возможных подходов - использовать для этой цели скалярные функции (работает в SQL Server):

CREATE FUNCTION FormatPhoneNumber(@phoneNumber VARCHAR(10))
RETURNS VARCHAR(12)
BEGIN
    RETURN SUBSTRING(@phoneNumber, 1, 3) + '-' + 
           SUBSTRING(@phoneNumber, 4, 3) + '-' + 
           SUBSTRING(@phoneNumber, 7, 4)
END
38
ответ дан 28 November 2019 в 22:18
поделиться

Я обычно рекомендую оставить форматирование на усмотрение внешнего кода и просто вернуть данные из SQL как есть. Однако, чтобы сделать это в SQL, я бы рекомендовал вам создать определяемую пользователем функцию для его форматирования. Примерно так:

CREATE FUNCTION [dbo].[fnFormatPhoneNumber](@PhoneNo VARCHAR(20))
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @Formatted VARCHAR(25)

IF (LEN(@PhoneNo) <> 10)
    SET @Formatted = @PhoneNo
ELSE
    SET @Formatted = LEFT(@PhoneNo, 3) + '-' + SUBSTRING(@PhoneNo, 4, 3) + '-' + SUBSTRING(@PhoneNo, 7, 4)

RETURN @Formatted
END
GO

Который затем можно использовать следующим образом:

SELECT [dbo].[fnFormatPhoneNumber](PhoneNumber) AS PhoneNumber
FROM SomeTable

Он имеет защиту на случай, если сохраненный номер телефона не соответствует ожидаемому количеству цифр, пуст, равен нулю и т. Д. - он не будет ошибка.

РЕДАКТИРОВАТЬ: Только что синхронизировано, вы хотите обновить существующие данные. Главный момент, который имеет отношение к моему ответу, заключается в том, что вам необходимо защитить себя от «хитрых» / неполных данных (т.е. что, если некоторые существующие значения имеют длину всего 5 символов)

15
ответ дан 28 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: