Проблемы с турецким сопоставлением SQL (турецкий язык “я”)

Симпи, вы можете сделать так для сценария опции:

<option value="<?php echo $rows["Product"];?>" <?=$rows['Product']=='//your val'?"selected":""?>><?php echo $rows["Product"]; ?></option>
                  <?php } ?>
5
задан Greg 15 May 2015 в 13:15
поделиться

6 ответов

Оказывается, что лучшим решением было бы фактически провести рефакторинг всего SQL и кода.

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

select unitid from dbo.unit 

будет изменен на

select UnitId from dbo.Unit

. Затем приложение также просматривает код и заменяет любые вхождения хранимого процесса и его параметров и корректирует их в соответствии с регистром. определяется в БД. Для всех таблиц данных в приложении задана инвариантная локаль (спасибо FXCop за указание всех таблиц данных ...), это предотвращает чувствительность к регистру вызовов внутри кода.

Если кому-то захочется приложение или какой-либо совет по В процессе вы можете связаться со мной по адресу dotnetvixen@gmail.com.

5
ответ дан 14 December 2019 в 13:46
поделиться

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

Лучшая практика - изменить настройки базы данных на UTF-8, и все. Это должно решить все проблемы.

Вы можете столкнуться с проблемами, если хотите поддерживать чувствительность к регистру в (ı-I, i-İ), которая может быть проблематичной для поддержки в SQL Server. Если весь вход поступает из Интернета, убедитесь, что это также UTF-8.

Если вы сохраните вход Web UTF-8 и настройки SQL Server как UTF-8, все должно пройти гладко.

1
ответ дан 14 December 2019 в 13:46
поделиться

Возможно, я не понимаю проблему здесь, но разве это не более вероятно, потому что база данных чувствительна к регистру, а ваш запрос - нет? Например, в Sybase я могу сделать следующее:

USE master
GO
EXEC sp_server_info 16
GO

Что говорит мне, что моя база данных нечувствительна к регистру:

attribute_id   attribute_name     attribute_value 
          16   IDENTIFIER_CASE    MIXED
0
ответ дан 14 December 2019 в 13:46
поделиться

Если вы можете изменить используемое сопоставление затем попробуйте инвариантную локаль. Но убедитесь, что вы не влияете на другие вещи, такие как имена и адреса клиентов. Если клиент привык к поиску своего имени без учета регистра, ему не понравится, если я и я перестанем быть эквивалентными или я и я перестану быть эквивалентными.

0
ответ дан 14 December 2019 в 13:46
поделиться

Можно ли изменить параметры сортировки базы данных на значения по умолчанию: при этом все ваши текстовые столбцы останутся с турецкой сортировкой?

Запросы будут работать, но данные будут работать правильно. Теоретически ...

Есть некоторые ошибки с временными таблицами и табличными переменными с столбцами varchar: вам придется добавить к ним предложения COLLATE

0
ответ дан 14 December 2019 в 13:46
поделиться

Я понимаю, что вы не хотите проходить через все хранимые процедуры, чтобы исправить проблему, но, возможно, у вас все будет в порядке, чтобы использовать инструмент рефакторинга для решения проблемы. Я говорю, взгляните на SQL Refactor . Я не использовал его, но выглядит многообещающе.

0
ответ дан 14 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

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