के साथ ओरेकल में एक्सेंट और केस असंवेदनशील संयोजन मुझे यह उत्तर उपयोगी पाया गया है: Accent and case insensitive COLLATE equivalent in Oracle, लेकिन मेरा प्रश्न संस्करण 9 ओरेकल डीबी के साथ खोजना पसंद है।LIKE
मैं इस तरह एक प्रश्न की कोशिश की है:
SELECT column_name
FROM table_name
WHERE NLSSORT(column_name, 'NLS_SORT = Latin_AI')
LIKE NLSSORT('%somethingInDB%', 'NLS_SORT = Latin_AI')
लेकिन कोई परिणाम नहीं कभी लौट कर रहे हैं।
import org.apache.commons.dbcp.BasicDataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DbCollationTest
{
public static void main(String[] args) throws SQLException
{
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
dataSource.setUrl("url");
dataSource.setUsername("usr");
dataSource.setPassword("pass");
Connection conn = null;
PreparedStatement createStatement = null;
PreparedStatement populateStatement = null;
PreparedStatement queryStatement = null;
PreparedStatement deleteStatement = null;
ResultSet rs = null;
try
{
conn = dataSource.getConnection();
createStatement = conn.prepareStatement("CREATE TABLE CollationTestTable (Name varchar(255))");
createStatement.execute();
String[] names = { "pepe", "pépé", "PEPE", "MEME", "mémé", "meme" };
int i = 1;
for (String name : names)
{
populateStatement = conn.prepareStatement("INSERT INTO CollationTestTable VALUES (?)");
populateStatement.setString(1, name);
populateStatement.execute();
}
queryStatement = conn.prepareStatement("SELECT Name FROM CollationTestTable WHERE NLSSORT(NAME, 'NLS_SORT = Latin_AI') LIKE NLSSORT('%pe%', 'NLS_SORT = Latin_AI')");
rs = queryStatement.executeQuery();
while (rs.next())
{
System.out.println(rs.getString(1));
}
deleteStatement = conn.prepareStatement("DROP TABLE CollationTestTable");
deleteStatement.execute();
}
finally
{
//DBTools.tidyUp(conn, null, rs);
//DBTools.tidyUp(createStatement);
//DBTools.tidyUp(populateStatement);
//DBTools.tidyUp(queryStatement);
//DBTools.tidyUp(deleteStatement);
}
}
}
मैं नहीं किया है किसी भी सफलता googling, किसी को भी किसी भी समाधान है था:
मैं परीक्षण करने के लिए एक छोटे से जावा फ़ाइल बनाई?
मैं किसी नाम के हिस्से पर एक खोज करना चाहता हूं और केस और उच्चारण असंवेदनशीलता का उपयोग करके मेल खाते हैं।
उत्तर के लिए धन्यवाद, क्या सत्र को बदलने के बिना ऐसा करने के लिए वैसे भी है? उसी सत्र में अन्य प्रश्नों के लिए मूल एनएलएस सेटिंग्स की आवश्यकता हो सकती है। चीयर्स। –
@Ed: आप क्वेरी चलाने से पहले सत्र पैरामीटर को सहेज सकते हैं (nls_session_parameters से * चुनें) फिर क्वेरी के बाद उन्हें वापस डालें। –
मैं इसका परीक्षण कर रहा हूं और सभी अच्छे लग रहे थे लेकिन अब मुझे बताया गया है कि एनएलएस_SORT और NLS_COMP समाधान केवल संस्करण 10 आर 2 में समर्थित है। मुझे न्यूनतम संस्करण 9 के साथ ओरेकल डेटाबेस का समर्थन करने की आवश्यकता है। क्या मैं एकमात्र तरीका केस और उच्चारण असंवेदनशील खोज कर सकता हूं? –