SQL Сервер: сбросьте нули из col1 и конкат с col2 в новое представление - PullRequest
0 голосов
/ 20 марта 2020

Мне нужно согласовать таблицы article1 (top) и article2 в View, отображающем различия. Но перед этим мне нужно удалить все нули из столбца type. Создайте новый столбец ID, равный номеру файла + типу, поэтому полученный столбец следует использовать в качестве индекса. Все столбцы имеют одинаковый тип данных

Необходимые столбцы:

ID
C0016
C0029
C00311

enter image description here

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вы можете использовать try_convert():

alter table table_name
    add id as concat(filenumber, try_convert(int, type)) persisted -- physical storage 

Если вы хотите просмотреть:

create view veiw_name 
as 
   select t.*, concat(filenumber, try_convert(int, type)) as id
   from table t;

try_convert() вернет ноль, в то время как разговор не удастся.

1 голос
/ 20 марта 2020

Вы можете использовать приведенный ниже скрипт на SQL сервере, чтобы получить нужный формат:

Ссылка на сообщение об удалении отступов 0

SELECT CONCAT(filenumber,type) AS filenumber, type, cost
FROM
(
SELECT
filenumber,
SUBSTRING(type, PATINDEX('%[^0]%',type), 
                   LEN(type)- PATINDEX('%[^0]%',type)+ 1) AS type, cost
FROM 
(
 VALUES 
  ('C001','00006',40),
   ('C002','00009',80),
   ('C003','00011',120)
  ) as t(filenumber,type, cost)
 ) AS t

Resultset

+------------+------+------+
| filenumber | type | cost |
+------------+------+------+
| C0016      |    6 |   40 |
| C0029      |    9 |   80 |
| C00311     |   11 |  120 |
+------------+------+------+
...