2009-07-24 2 views
0

мне нужно форматировать данные в SQL столбец, который в настоящее время вводятся так:Форматирование VARCHAR данных в определенном формате

Z04000002003.7

Нужный выход из этого будет:

Z04 /000/002/003.7

Каждый раз, когда пользователь вводит данные, подобные этому Z04000002003.7. В следующий раз, когда пользователь откроет запись, он автоматически отформатировал ее для отображения Z04/000/002/003.7.

+0

Что нужно хранить - косые черты или нет косые черты? –

ответ

1

Если вы хотите, чтобы вставить косую черту на INSERT или UPDATE (когда строка попадет в базу данных) или SELECT, вы можете сделать это в TSQL с несколько неуклюжим строковым выражением:

SUBSTRING(thestring, 1, 3) + '/' + SUBSTRING(thestring, 4, 6) + '/' + ... 

и так далее , но я согласен с другими респондентами в том, что это может быть лучшая архитектура для выполнения таких преобразований «ближе к пользователю» (в пользовательском интерфейсе или, возможно, на уровне бизнес-логики, если эти косые черты фактически являются частью бизнес-логики, но пользовательский интерфейс выглядит правдоподобно).

+0

Проблема в том, что если обновление отправляется через уже отформатированную версию данных, тогда вы вставляете в нее лишние косые слова и, следовательно, в неправильном месте. Если вы предварительно протестировали, чтобы убедиться, что косые черты отсутствуют, ваше выражение хорошее. Также возникает вопрос, что произойдет, если пользователь наберет «Z0/40/00/00/20/03.7'» - этот материал должен, по-видимому, обрабатываться пользовательским интерфейсом. –

+0

@ Джонатан, согласившись, как я уже упоминал, UI (может быть, но маловероятно, бизнес-логика) может быть лучшим местом для стандартизации этой строки. И я сказал, что это неуклюжие выражения помогают * ЕСЛИ * вы хотите вставлять косые черты - если вы этого не сделаете, то ясно, что это не так! -) –

+0

Пользователь не будет добавлять косые черты. Слэши предназначены для чистого поиска. –

2

Когда вы говорите «откройте запись», где именно это происходит? Веб-страница?

Сделайте форматирование как можно ближе к пользователю, как пользовательский слой. Я не думаю, что это проблема SQL.

+0

Да. Это относится к пользовательскому интерфейсу. – shahkalpesh

+0

Делайте это при отображении фактического значения. +1. – Will

+0

Запись - это значение, которое пользователь добавляет через приложение. –

0

Несколько вариантов:
1. Сценарий обновить все форматы строки от старого к новому стандарту
2. Как n8wrl сказал формат при вставке
3. Формат по возвращению данных.

0

Данные должны быть отформатированы при вводе в базу данных. Пользовательский интерфейс не должен отправлять точно то, что было введено в базу данных. Пользователь не должен знать, что вы добавили/s. Если вы не можете изменить ввод данных в пользовательском интерфейсе (который будет моим первым выбором, где его изменить), напишите триггер для обработки данных вставки или обновления в правильном формате. Убедитесь, что триггер может обрабатывать многострочные вставки или обновления строк!

Смежные вопросы