Для ошибки xml, потому что имя столбца содержит пробелы

#sql #sql-server #xml #tsql

#sql #sql-сервер #xml #tsql

Вопрос:

У меня есть следующая таблица (называемая temp1):

  ------- ------ ------ ------ ---------------------- 
| cntry | col1 | col2 | col3 | ACV Distribution (w) |
 ------- ------ ------ ------ ---------------------- 
| UK    |  100 |  100 |  100 |                    0 |
| FR    |  100 |  100 |  100 |                    0 |
 ------- ------ ------ ------ ---------------------- 
  

При выполнении этого оператора:

 DECLARE @listStr varchar(MAX);
DECLARE @query varchar(MAX);
drop table if exists temp2 ;
set @liststr = (  select * from temp1  where cntry = 'UK' for xml path('') )
set @query =('SELECT top 10 col1,col2,col3,'   @listStr   ' INTO temp2 FROM temp3' )
execute(@query); 
SELECT * FROM temp2 ;
  

Я получаю эту ошибку:

ОШИБКА: имя столбца ACV Distribution (w) содержит недопустимый XML-идентификатор, требуемый для XML

Я застрял здесь, так как не могу изменить имя столбцов и должен использовать динамический sql.

Комментарии:

1. Используйте quotename() .

2. могу ли я использовать quotename для *, потому что в соответствии с определением я поместил строку и quote_character

3. Вам нужно изменить имя столбца, чтобы оно стало допустимым именем элемента SQL… Нравится SELECT ..., [ACV Distribution (w)] AS ACV_Distribution_w

4. @SalmanA не может изменить имя столбца, в моем случае они стандартные

5. что здесь temp3? Не используя ваш текущий подход, можете ли вы объяснить, каковы фактические требования? Возможно, могут быть другие подходы к решению…