sqlè¯å¥å¤æä¸ä¸ªå段æ¯å¦å å«å¨å¦ä¸ä¸ªå符串ä¸çæ¹æ³
ä¸ãè¯å¥ä¸ä½¿ç¨å°çå½æ°æ
1ãCHARINDEXï¼å½æ°è¿åå符æè å符串å¨å¦ä¸ä¸ªå符串ä¸çèµ·å§ä½ç½®ã
è¯æ³ï¼CHARINDEX ( expression1 , expression2 [ , start_location ] )
expression1æ¯è¦å°expression2ä¸å¯»æ¾çå符ä¸ï¼start_locationæ¯CHARINDEXå½æ°å¼å§å¨expression2ä¸æ¾expression1çä½ç½®ã
CHARINDEXå½æ°è¿åä¸ä¸ªæ´æ°ï¼è¿åçæ´æ°æ¯è¦æ¾çå符串å¨è¢«æ¾çå符串ä¸çä½ç½®ãåå¦CHARINDEX没ææ¾å°è¦æ¾çå符串ï¼é£ä¹è¿å0
2ãrtrim:å½æ°å»é¤å符串å³è¾¹çç©ºæ ¼ç¬¦ã
äºãä¾åä¸çè¡¨æ ¼ä¸º:tt,ç»ææ°æ®å¦ä¸
ä¸é¢è¯å¥æ£ç´¢test_columnå段çå¼å
å«å¨å符串 âaabbâä¸çè®°å½
1ãrtrim(test_column)ï¼é¨åæ°æ®åºï¼å¨å¯¹å符åå段çå¼åæä½çæ¶åï¼ä¼å¨å符串çå³è¾¹è¡¥è¶³ç©ºæ ¼ç¬¦ã
ä¾å¦:å段类å为char(8),å段çå¼ä¸ºâaaâ,é£ä¹ä¼ä½¿ç¨âaa âæ¥æä½ï¼è¿æ ·ä¼å½±åè¯å¥çç»æãæ以使ç¨rtrimå½æ°å»é¤å符串å³è¾¹çç©ºæ ¼ç¬¦ã
2ãCHARINDEX(rtrim(test_column),'aabb')ï¼å¨å符串âaabbâä¸æ¥æ¾æ¯å¦å å«rtrim(test_column)è¿åçå符串ï¼æ¾å°è¿åå符串起å§ä½ç½®ï¼åä¹è¿å0.æ以å å«åè¿å大äº0çå¼ã
3ãè¯å¥æ§è¡ç»æï¼
思路是,读取B.name字符串后进行字符串的的分割 name.,然后最后执行模糊查询A表,可以这样
WHERE (A.nameLIKE '%查%') AND (A.nameLIKE '%体%')
只能说完全用sql语句实现,有点难吧!
string name = "查体";
char[] NameChar = name.ToArray();
string SqlStr = "select * from A ";
for (int i = 0; i < NameChar.Count(); i++)
{
if (i == 0)
{
SqlStr += "where A.name LIKE'%" + NameChar[0] + "%'";
}
else
{
SqlStr += " and A.name LIKE'%" + NameChar[i] + "%'";
}
}
可以告诉你,没有关联查一个表还行,两个表都来不太可能。