Member 11776570 Ответов: 2

Как удалить лишние данные


я использую этот запрос для получения данных.
SELECT t1.HId,
commands=STUFF   
(   
     (   
       SELECT DISTINCT ',' + t2.commands  
       FROM history_detail t2
       WHERE  t1.HId = t2.History_HID    
       FOR XML PATH('')   
     ),1,1,''   
)   
FROM history t1,  history_detail t2  
GROUP BY HId 


но out put - это один из столбцов команд
Send("this is your first testcase")

,Sleep(3000)

`�xD;`
,WinActive("notepad")
`�xD;`
,WinClose("notepad")
`�xD;`
,WinWaitActive("notepad")`�xD;`


я хочу удалить `�xD;` из данных, которые приходят вместе с ним.

Что я уже пробовал:

я попробовал но лишние данные не удаляются

2 Ответов

Рейтинг:
10

Richard Deeming

Вы получаете выходные данные в XML-кодировке. Измените запрос на:

SELECT 
    t1.HId,
    commands = STUFF   
    (   
        (   
            SELECT DISTINCT ',' + t2.commands  
            FROM history_detail t2
            WHERE  t1.HId = t2.History_HID    
            FOR XML PATH(''), TYPE
        ).value('.', 'varchar(max)'), 1, 1, ''   
    )   
FROM 
    history t1
;

  • Добавь ,TYPE после PATH('');
  • Добавь .value('.', 'varchar(max)') после вложенного запроса;

Там нет необходимости включать history_detail во внешнем запросе; удаление его также устранит необходимость в GROUP BY пункт.

Конкатенация значений строк в Transact-SQL - Simple Talk[^]


Рейтинг:
0

OriginalGriff

Вам нужно посмотреть на свои данные: в частности, на то, что хранится в вашем компьютере. history_detail.commands колонка.
Похоже, что то, что поместило туда данные, добавило какой - то мусор в конец-вы можете удалить его с помощью функций SQL CHARINDEX и SUBSTRING, но сначала вам нужно точно выяснить, что это такое.
CHARINDEX (Transact-SQL) | Microsoft Docs[^]
Функция SQL Server SUBSTRING() [^]

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