Отделение класса Thread от реализации Runnable также позволяет избежать потенциальных проблем синхронизации между потоком и методом run (). Отдельный Runnable обычно дает большую гибкость в способах ссылки и выполнения исполняемого кода.
Я не могу оставить комментарий, поэтому мне придется оставить ответ (или заткнуться).
Я бы проголосовал за addAndMinusBehaviour
У меня нет хорошего третья альтернатива, возможно, есть какие-то неясные правила пробелов, с которыми можно поиграть в назначении options / SET / Collation, но я не знаю более подробной информации, которая у меня в голове.
но на самом деле addAndMinusBehaviour, вероятно, проще всего реализовать, быстрее всего выполнить и, если вы это задокументируете, тоже легко обслуживается.
Насколько я понимаю, DATALENGTH (@txt) / 2 всегда должен указывать количество символов. SQL Server хранит символы Unicode в UCS-2, который не поддерживает суррогатные пары.