Все, У меня есть таблица mySQL с двумя полями, old
и new
. Каждый содержит строку в следующем формате:MySQL получить разницу между двумя строковыми полями
key1=value1, key2=value2, key3=value3
Клавиши, используемые в каждом поле для строки одинаковы, значения могут изменяться. Для каждой строки ключи могут отличаться.
Возможно ли иметь еще два столбца, которые сравнивают значения в old
и new
и выдает только те пары ключ/значение, которые отличаются?
old | new | diff_old | diff_new
key1=xxx, key2=yyy, key3=zzz | key1=xxx, key2=aaa, key3=zzz | key2=yyy | key2=aaa
keya=xxx, keyb=yyy, keyc=zzz | keya=111, keyb=yyy, keyc=222 | keya=xxx, keyc=zzz| keya=111, keyc=222
Im известен SUBSTRING_INDEX
может быть использован для разделения строк, однако вопрос различающегося пар ключа/значения между строками, что означает функция не может быть приготовлена так легко.
Строка компонент это делает его значительно более сложной ... любая воля, чтобы нормализовать значения там (поэтому key1, key2 и key3 являются отдельными полями)? Комбинация подстроки и charindex, чтобы выбрать значение для каждого ключа, а затем сравнить то, что он выбирает, очень возможно, просто не так весело писать ... много проб и ошибок. – Twelfth
Является ли список возможных ключей известными и статичными? Вы ищете что-то вроде реализации MySQL http://en.wikipedia.org/wiki/Longest_common_subsequence_problem? Это одноразовое задание или вы хотите, чтобы столбцы 'diff_old' и' diff_new' были заполнены, так как новые строки добавляются в эту таблицу? – yegeniy