Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как перевести символ в unicode и наоборот / 15 сообщений из 15, страница 1 из 1
08.12.2021, 23:59
    #40118545
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
собственно как перевести а в ->'a' или наоборот 'a' -> а. Возможно нужен словарь то у кого есть готовый перевод вьетнамских символов буду благодарен за любой вариант.
...
Рейтинг: 0 / 0
09.12.2021, 00:11
    #40118546
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
kolyady
собственно как перевести а в ->'a' или наоборот 'a' -> а. Возможно нужен словарь то у кого есть готовый перевод вьетнамских символов буду благодарен за любой вариант.
Какой словарь???
Код: sql
1.
select NCHAR(0x0430), convert(varchar(10), convert(binary(2), UNICODE(N'а')), 2)
...
Рейтинг: 0 / 0
09.12.2021, 00:31
    #40118547
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
alexeyvg,

ну тот например который из а переводит в а ?
...
Рейтинг: 0 / 0
09.12.2021, 01:23
    #40118550
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
kolyady,

А откуда у вас приходит такое значение?

На 2016+ можно так:
Код: sql
1.
2.
3.
4.
declare @a varchar(50) = 'а';

select *
from openjson('[' + quotename(@a, '"') + ']') j;
...
Рейтинг: 0 / 0
09.12.2021, 06:40
    #40118555
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
-- Description:	Преобразование строки 
-- "Са..." в nvarchar (utf16)
/*
declare @str nvarchar(max) = 'Самая полезная рассылка Море Трэвел'
select * from [mailchimp].[decodeJsonStr]( @str ) as t
*/
ALTER FUNCTION [MailChimp].[decodeJsonStr]( @str nvarchar(max) )
RETURNS TABLE 
AS
RETURN 
(
with t0 as ( select * from dbo.f_nStrToTableEx_v2(@str, N'\') as x )
   , t  as ( select n = Number
                  , s = case when left(Value, 2) = N'u0' then
                                nchar(cast(convert(binary(2), substring(Value, 2, 4), 2) as int))
                                + substring(Value, 6, 100000)
                            else Value
                        end
               from t0
            )
       select str = ( select s + '' from t order by n asc for xml path(''), type ).value('.', 'nvarchar(max)')
)

-- Description:	Преобразование строки 
--  nvarchar  в "Са..."
/*
declare @str nvarchar(max) = 'Самая полезная рассылка Море Трэвел'
declare @str0 nvarchar(max) = N'{} /\ []Самая полезная рассылка Море Трэвел'
declare @estr nvarchar(max) = (select str from [mailchimp].[encodeJsonStr]( @str0) as t);
select @str0;
select @estr;
select str from [mailchimp].[decodeJsonStr]( @estr) as t
*/
ALTER FUNCTION [MailChimp].[encodeJsonStr]( @str nvarchar(max) )
RETURNS TABLE 
AS
RETURN 
(
with t0 as ( select n, c = substring(@str, n, 1) from dbo.N where n between 1 and len(@str) )
   , t1 as ( select n, c, u = unicode(c) from t0 )
   , x as ( select x = N'{}[]""\' )
   , t  as ( select n, c = case when u > 127 or charindex(c, x) > 0 
                                  then '\u' + lower( convert( nvarchar(4), cast( u as binary(2)), 2 ))
                                else c
                           end
               from t1 cross join x
            )
       select str = ( select c + '' from t order by n asc for xml path(''), type ).value('.', 'nvarchar(max)')
)
...
Рейтинг: 0 / 0
09.12.2021, 08:50
    #40118560
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
kolyady
alexeyvg,

ну тот например который из а переводит в а ?
Я вам запрос написал, который из а переводит в а
Или что вам нужно?
...
Рейтинг: 0 / 0
09.12.2021, 08:52
    #40118561
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
aleks222,

А зачем такие сложности, если есть простые ф-ции NCHAR и UNICODE?
Может, я не понял задачу ТС?
...
Рейтинг: 0 / 0
09.12.2021, 10:56
    #40118575
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
alexeyvg
aleks222,

А зачем такие сложности, если есть простые ф-ции NCHAR и UNICODE?
Может, я не понял задачу ТС?

Так оно и переводит. Только сразу всю строку.
...
Рейтинг: 0 / 0
09.12.2021, 11:52
    #40118583
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
aleks222
alexeyvg
aleks222,

А зачем такие сложности, если есть простые ф-ции NCHAR и UNICODE?
Может, я не понял задачу ТС?

Так оно и переводит. Только сразу всю строку.
А, в этом смысле, что бы текст перевести, в котором встречаются такие коды?
Просто ТС так задал вопрос, как будто у него есть таблица с кодами, и нужно перевести их в символы.
...
Рейтинг: 0 / 0
09.12.2021, 14:41
    #40118620
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
Ennor Tiegael,

Спасибо , идеальное решение. :)
...
Рейтинг: 0 / 0
09.12.2021, 15:32
    #40118635
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
aleks222,

в ваших примерах используются обьекты :
dbo.N , dbo.f_nStrToTableEx_v2
Было бы неплохо скрипты на их создание предоставить , так как использовать ваш код не представляется возможным.
Спасибо.
...
Рейтинг: 0 / 0
09.12.2021, 15:46
    #40118640
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
Ennor Tiegael
kolyady,

А откуда у вас приходит такое значение?

На 2016+ можно так:
Код: sql
1.
2.
3.
4.
declare @a varchar(50) = 'а';

select *
from openjson('[' + quotename(@a, '"') + ']') j;



метод хорош но ограничение в 128 символов все меняет, можно резать циклом и перебирать кусками , потом склеивать. Но чесно так себе метод. Может есть метод который может работать со строкой например nvarchar(max).
...
Рейтинг: 0 / 0
09.12.2021, 17:05
    #40118676
Oleg_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
kolyady,

Код: sql
1.
2.
3.
4.
5.
6.
7.
SET STATISTICS IO, TIME OFF;

DECLARE @s NVARCHAR(MAX) = 'абвгдежзийрстуфхцчшщѐёђѓєѕіїјљѠѡѢѣѤѥѦѧѨѩ';

SELECT STRING_AGG(NCHAR(CONVERT(BINARY(2), SUBSTRING(value, 2, 4), 2)), '')
  FROM STRING_SPLIT(@s, '\')
 WHERE value > ' ';
...
Рейтинг: 0 / 0
09.12.2021, 17:10
    #40118679
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
kolyady,

Можно выкинуть QUOTENAME() и заменить "двойными кавычками" без потери смысла. Особенно в рамках данного примера. Переменную использовать nvarchar(max), ну и т.д.

Тут самый главный вопрос, на который вы так и не ответили:
Ennor Tiegael
А откуда у вас приходит такое значение?

От ответа будут зависеть детали.
...
Рейтинг: 0 / 0
09.12.2021, 19:58
    #40118733
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как перевести символ в unicode и наоборот
kolyady
aleks222,

в ваших примерах используются обьекты :
dbo.N , dbo.f_nStrToTableEx_v2
Было бы неплохо скрипты на их создание предоставить , так как использовать ваш код не представляется возможным.
Спасибо.

Ща я ведро кода залью.
Там и так фсе понятно.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как перевести символ в unicode и наоборот / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]