SQL Server Escape an Underscore
Jak uciec od znaku podkreślenia?
Piszę coś w stylu poniższej klauzuli where i chcę być w stanie znaleźć rzeczywiste wpisy z _d na końcu.
Where Username Like '%_d'
3 answers
T-SQL Reference for LIKE for SQL Server 2000:
Można używać znaków pasujących do wzorców wieloznacznych jako znaków literalnych. Aby użyć znaku wieloznacznego jako literalnego, należy umieścić go w nawiasach. Tabela pokazuje kilka przykładów użycia słowa kluczowego LIKE I znaków wieloznacznych [].
W Twoim przypadku:
... LIKE '%[_]d'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-08 11:59:36
Oczywiście @Lasse solution ma rację, ale jest inny sposób na rozwiązanie problemu: operator T-SQL LIKE
definiuje opcjonalną klauzulę ESCAPE , która pozwala zadeklarować znak, który będzie uciekał od następnego znaku do wzorca.
W Twoim przypadku, następujące zdania są równoważne:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-02 14:20:40
Te rozwiązania mają sens. Niestety, żadne z nich nie zadziałało zgodnie z oczekiwaniami. Zamiast próbować się z tym kłopotać, poszedłem do pracy wokół:
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-01 19:50:03