【问题标题】:accented characters in String [duplicate]字符串中的重音字符[重复]
【发布时间】:2018-07-09 16:02:34
【问题描述】:

我有以下字符被识别为 SQL 中的特殊字符:

# ¢ 英镑 ¥ $ 欧元 一种 Ę Ż Ź C Ó α ß Γ δ ε θ π 微米 Σ σ τ Φ φ Ω 一种 Ë 一世 ü

只有这些字符应该被识别为特殊字符。 谁能帮帮我

谢谢, 天真

【问题讨论】:

    标签: sql diacritics latin


    【解决方案1】:

    很久以前我发现了一个很好的功能,并且我经常使用它,它可以找到所有不可见/奇怪的字符,试试它也许它也适用于你的情况。你会这样做的方式是,选择 dbo.ShowWhiteSpace(Column name)

    CREATE FUNCTION [dbo].[ShowWhiteSpace] (@str varchar(8000))
    RETURNS varchar(8000)
    AS
    BEGIN
         DECLARE @ShowWhiteSpace varchar(8000);
         SET @ShowWhiteSpace = @str
         SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(32), 'Char(32),[?]')
         SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(13), '[CR]')
         SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(10), '[LF]')
         SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(9),  '[TAB]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(1),  '[SOH]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(2),  '[STX]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(3),  '[ETX]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(4),  '[EOT]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(5),  '[ENQ]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(6),  '[ACK]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(7),  '[BEL]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(8),  '[BS]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(11), '[VT]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(12), '[FF]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(14), '[SO]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(15), '[SI]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(16), '[DLE]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(17), '[DC1]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(18), '[DC2]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(19), '[DC3]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(20), '[DC4]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(21), '[NAK]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(22), '[SYN]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(23), '[ETB]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(24), '[CAN]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(25), '[EM]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(26), '[SUB]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(27), '[ESC]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(28), '[FS]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(29), '[GS]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(30), '[RS]')
       SET @ShowWhiteSpace = REPLACE( @ShowWhiteSpace, CHAR(31), '[US]')
         RETURN(@ShowWhiteSpace)
    END
    

    【讨论】:

    • 感谢您的快速回复。我没有执行权限:消息 229,级别 14,状态 5,第 1 行对象“ShowWhiteSpace”,数据库“dswMM_GEIS”的执行权限被拒绝,架构“dbo”。
    • 在这种情况下,手动选择每个 char() 字符用替换 Select REPLACE(Column , CHAR(29), '[GS]') from .... 或者你可以上来使用 while 循环检查表中所有行的每个 char() 字符。
    猜你喜欢
    • 2014-06-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多