У меня есть одна таблица в MSSQL Server 2012, тип данных одного столбца которого определяется следующим образом:
COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE
description 2005 nvarchar 1073741823
Когда я запускаю этот запрос:
select * from tablename
используя PHP PDO, я не получаю никакого результата. И если я пишу имена всех полей в вышеупомянутом SQL-запросе выбора, исключая это поле, то я получаю результат.
Что не так с этим типом данных?
Замечания: эта таблица напрямую импортируется из MySQL с помощью некоторого инструмента.
Я много гуглил, но не смог найти никакого решения.
Решение на этом сайте кажется актуальным здесь, http://eugenioz.blogspot.com/2013/07/php-mssql-nvarchar-fetch-and-write-utf.html.
В случае, если этот сайт удаляет сообщение или выходит из строя, решение состоит в том, чтобы использовать nvarchar как varchar.
SELECT CAST(CAST([field] AS VARCHAR(8000)) AS TEXT) AS field FROM table
Для вставки это показывает как
INSERT INTO some_table (some_nvarchar_field) VALUES(CONVERT(nvarchar(MAX), 0x'.$value.'))
Других решений пока нет …