Преобразование строки для ПРЕОБРАЗОВЫВАНИЯ В ШЕСТНАДЦАТЕРИЧНУЮ СИСТЕМУ в SQL

Ваша переменная maxsize не синхронизируется между потоками, поэтому существует проблема с потоками. Кроме того, ConcurrentQueue уже имеет функцию ElementAtOrDefault, которая автоматически возвращает null, если индекс не существует.

Я бы обновился, чтобы унаследовать от ConcurrentQueue сам.

public class FixedSizeConcurrentQueue<T> : ConcurrentQueue<T>
{
    public int MaxSize { get; }

    public FixedSizeConcurrentQueue(int maxSize)
    {
        MaxSize = maxSize;
    }

    public new void Enqueue(T obj)
    {
        base.Enqueue(obj);

        while (base.Count > MaxSize)
        {
            T outObj;
            base.TryDequeue(out outObj);
        }
    }

    public T GetElementAt(int index)
    {
        return base.ElementAtOrDefault(index);;
    }
}
11
задан Claude Houle 20 October 2008 в 17:33
поделиться

2 ответа

Можно ли использовать Бросок и fn_varbintohexstr?

SELECT master.dbo.fn_varbintohexstr(CAST(SomeStringColumn AS varbinary)) 
FROM SomeTable

Я не уверен, есть ли у Вас та функция в Вашей системе баз данных, это находится в MS-SQL.

Я просто попробовал его в своем SQL-сервере MMC на одной из моих таблиц:

SELECT     master.dbo.fn_varbintohexstr(CAST(Addr1 AS VARBINARY)) AS Expr1
FROM         Customer

Это работало как ожидалось. возможно то, что я знаю как ведущее устройство dbo.fn_varbintohexstr на MS-SQL, могло бы быть подобно шестнадцатеричному числу informix () функция, таким образом, возможно попробуйте:

SELECT     hex(CAST(Addr1 AS VARBINARY)) AS Expr1
FROM         Customer
19
ответ дан 3 December 2019 в 06:23
поделиться

Если для Вас возможно сделать это в клиенте базы данных в коде, это могло бы быть легче.

Иначе ошибка, вероятно, означает, что созданный в шестнадцатеричной функции не может работать с Вашими значениями, как Вы ожидаете. Я проверил бы входное значение дважды, обрезается и в формате сначала, это могло бы быть настолько просто. Затем я консультировался бы с документацией базы данных, которая описывает шестнадцатеричную функцию, и посмотрите то, что ее ожидаемый вход был бы и сравнил бы это с некоторыми Вашими значениями и узнал бы то, что различие и как изменить Ваши значения для соответствия тому из ожидаемого входа.

Простой поиск Google "informix шестнадцатеричная функция" поднял первую страницу результатов с предложением: "Должно быть литеральное целое число или некоторое другое выражение, которое возвращает целое число". Если Ваш тип данных является строкой, сначала преобразуйте строку в целое число. Это похоже на первый взгляд, что Вы делаете что-то с функцией броска (я не уверен в этом).

select hex(cast SomeStringColumn as int)) from SomeTable
0
ответ дан 3 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: