Convert to ASCII char in sql server

后端 未结 2 1162
眼角桃花
眼角桃花 2021-01-02 21:56

In Oracle I can convert ÄÊÍABCDE to AEIABCDE using:

SELECT CONVERT(\'ÄÊÍABCDE\', \'US7ASCII\') from dual;

Output:

2条回答
  •  旧巷少年郎
    2021-01-02 22:38

    [Answer to the question in comment from 'Praveen']

    As explained in the answer by DhruvJoshi, the collation is forced on both the sides.

    To work around this problem, you could create a function (that performs the collation) which takes the 'string to be collated' as argument and returns collated string.

    You could then call the function on one side of the check condition.

    The function may look something like this:

    create function dbo.convert_ascii(@input nvarchar(500))
    returns varchar(500)
    as
    begin
    declare @collatedstring varchar(500)
    set @collatedstring = CAST(@input AS varchar(100)) 
    COLLATE SQL_Latin1_General_CP1253_CI_AI
    return collatedstring 
    end
    

    And you could invoke it this way:

    if 'ÄÊÍABCDE' = dbo.convert_ascii('ÄÊÍABCDE')
    print 'same' 
    else 
    print 'not same'
    

    This should work.

提交回复
热议问题