2016-03-23 32 views
0

özel char SQL Server 2005 tablosunda bir alan arıyorum. Ben 'nerede' koşulu olmadan adını almak için tabloyu sorabilirPHP ile SQL Server sorgu - Fransızca

$query = "select * from TableName where replace (replace (client , 'é' ,'e') , 'ç' ,'c') COLLATE French_CI_AI = 'Agence française du texte agréable'"; 

gibi bir şey kullanıyorum, ama içinde 'Agence française du texte agréable' bu özel ad kullanırsanız bunu soramazsın fıkra

Her diğer isimler bu yüzden çalışıyoruz nerede sorun

Yardımlarınız için teşekkür ederim 'ç' veya 'é' karakteri ile ilişkili olduğunu varsayalım!

------------- DÜZENLEME --------------

sizin anwser için teşekkür ederiz. Ç 've é' yi kaldırarak başka bir test yaptım, bu 'Agence francaise du texte agreable'

Ve yine de bilgileri alamıyorum! Nihayet benim sorunum nerede? ... Ayrıca, $ query = "İstemci = 'Agence francaise du texte agreable' tablosundan Tablodan * seçin;";

ve var_dump döner kaynak (4, SQL Server Bildirimi)

ve fetch_array ait var_dump,

ben ... başka isimlerle :(

ile çalışır anlamıyorum null döndürür

---------- EDIT 2 --------------

Sorunumun yalnızca bir sonucu olduğu ve benim kodumdan geldiğini öğrendim O zaman işe yaramadı Daha sonra kodumu

ile değiştirdim
$query = "select * from Table where client COLLATE French_CI_AI = 'Agence française du texte agréable'"; 

// SQLSrv_num_rows requires a static or keyset cursor. 
if (strncmp(ltrim(strtoupper($query)), 'SELECT', strlen('SELECT')) == 0) 
{ 
$array = array('Scrollable' => SQLSRV_CURSOR_KEYSET); 
} 
else 
{ 
$array = array(); 
} 

$cursor = sqlsrv_query($db, $query, array(), $array); 
$row = sqlsrv_fetch_array($cursor, SQLSRV_FETCH_NUMERIC); 

Yardımlarınız için hepinize teşekkür ederiz!

+1

utf karşılaştırmalar, '' é '=' e ''' true 'anlamına gelecektir. vurgulu karakterleri "müşteri" alanından KALDIRMAK için herhangi bir nedenle, daha sonra kaldırdığınız karakterleri içeren bir dizeyle karşılaştırın. "Bu elmayı götür ve bir portakalla değiştir. Hey, neden artık bir elma değil?" –

+0

Çözmeyi denediğiniz problemi biraz daha açıklayabilir misiniz? – BPS

+0

Sorunumu buldum. Buna ihtiyacım olmadığını söylediğim gibi, birkaç değişiklik yaptım ve sorgum sadece bir sonuç aldığında, bunu okuyamıyorum. (ilk gönderimdeki kod değişikliklerine bakın) – cedric

cevap

0

ben bile hiç özel karakterleri kaldırmak gerekir sanmıyorum (yani: replace()) neden sadece sadece yapın: o zaman

$query = "select * from TableName COLLATE French_CI_AI = 'Agence française du texte agréable'"; 

gerçekten fransız karakterleri kaldırmak istiyorsanız sebebi ne olursa olsun:;

yine Fransız karakterleri ve uğraşmayın yerini alabilir Bu şekilde

$ = str_replace ("é", "e", str_replace ("ç", "c", $ sonuç) neden sorgunuzu yazınız

+0

anwser'ünüz için teşekkür ederiz. – cedric