none
中国风 麻烦你再帮我看一下这个问题,谢谢 RRS feed

  • 问题

  •  

    问题地址:

    http://social.msdn.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/d24857ac-9bec-4638-ae9b-0fa325ff9015/#dbfb7e1d-fa9d-4bbf-af5e-cb4e0e782a55

     

    你好 中国风 我按照你提供的例子

       这样写的 ',1920,'  like '%'+rtrim(N.NodeID)+'%'

     

    如果strArr 是1920 或着大于100 的数字, 查到的结果 有NodeID 是 92 的,也有是920的,和20的,

     

    这个时候我只想查出 NodeID 是1920的,请问怎么处理?

     

    谢谢!


    2011年4月10日 10:40

答案

  • 倒是没问题了,  但查询速度还是很慢 ,有时候还超时

    這樣的表設計,違反第1範式

    效率提高不了多少

    不能改變表結構的情況下,可以在arrchilID 列建一下索引,查詢時 指定索引

    from 表 with(index=索引名)


    ROY WU(吳熹)
    2011年4月11日 5:54
    版主

全部回复

  • 你好,xiawei_hi 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌

    在条件字符里那里加上引号

     ',1920,' like '%,'+rtrim(N.NodeID)+',%'
    or
    patindex('%,'+rtrim(N.NodeID)+',%',','+strArr+',')>0
    or
    charindex(','+rtrim(N.NodeID)+',',','+strArr+',')>0
    

    ROY WU(吳熹)
    2011年4月10日 16:23
    版主
  • 如果 数字多了还是报 错 错误 字符串 '38,66,67,68,70,71,72,73,74,75,76,77,78,80,81,82,83,84,85,86,87,88,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,116,118,119,120,121,122,124,125,126,127,128,129,130,132,133,134,135,65,69,79,89,98,111,117,123,131,137,138,139,140,141,142,143,144,146,147,148,150,151,152,153,155,156,157,158,159,161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,180,181,182,183,184,185,187,188,189,190,191,193,194,195,196,197,198,199,979,201,202,203,204,205,206,207,208,136,145,149,154,160,170,179,186,200,210,211,212,213,214,215,216,217,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,254,255,256,257,258,259,260,261,262,263,264,265,267,268,269,270,271,272,273,274,275,277,278,279,280,282,283,284,285,286,287,289,290,291,292,293,294,209,218,234,253,266,276,281,288,296,297,298,299,300,301,302,304,305,306,307,308,309,310,311,313,314,315,316,317,318,319,320,322,323,324,325,327,328,329,330,331,332,334,335,336,337,338,339,340,342,343,344,345,347,348,349,350,351,352,353,354,355,295,303,312,321,326,333,341,346,357,358,359,360,361,362,363,365,366,367,368,369,370,371,373,374,375,376,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,394,395,397,398,399,400,401,402,356,364,372,377,393,396,404,405,406,407,408,409,410,412,413,414,415,416,417,418,420,421,422,423,424,425,426,428,429,430,431,433,434,435,436,438,439,440,441,469,472,473,474,447,448,449,450,451,452,453,455,456,457,459,460,461,462,463,464,466,467,468,403,411,419,427,432,437,446,454,465,476,477,478,479,480,481,482,484,485,486,487,488,490,491,492,493,495,496,497,498,499,500,502,503,504,505,506,507,508,509,511,512,513,514,515,516,517,518,519,521,522,523,524,525,526,527,528,530,531,532,533,534,535,536,537,538,540,541,542,543,544,545,546,547,549,550,551,552,553,555,556,557,559,560,561,562,563,564,565,566,475,483,489,494,501,510,520,529,539,548,554,558,568,569,570,571,572,573,574,575,577,578,579,580,581,582,583,584,586,587,588,589,590,591,592... '38,66,67,68,70,71,72,73,74,75,76,77,78,80,81,82,83,84,85,86,87,88,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108' 附近有语法错误。 ',' 附近有语法错误。 PR_Common_GetListBySortColumn过程试图返回状态 NULL,这是不允许的。将返回状态 0。
    2011年4月11日 2:14
  • 如果是SQL2005以上版本,用Like條件,把變量定議為 nvarchar(max) --------- 如果時SQL2000定議varchar(8000),超出了存儲都會有問題,樓主的表字段是什麼類型?
    ROY WU(吳熹)
    2011年4月11日 3:00
    版主
  • 是 sql 2005   N.NodeID 是 int 型,    arrchildID  是 ntext 型
    2011年4月11日 3:54
  • 是 sql 2005   N.NodeID 是 int 型,    arrchildID  是 ntext 型

    把變量傳參改為nvarchar(max)就行了,如果是用表連接需要用','+cast(arrchilID as nvarchar(max))+','


    ROY WU(吳熹)
    2011年4月11日 4:05
    版主
  • 倒是没问题了,  但查询速度还是很慢 ,有时候还超时
    2011年4月11日 5:35
  • 倒是没问题了,  但查询速度还是很慢 ,有时候还超时

    這樣的表設計,違反第1範式

    效率提高不了多少

    不能改變表結構的情況下,可以在arrchilID 列建一下索引,查詢時 指定索引

    from 表 with(index=索引名)


    ROY WU(吳熹)
    2011年4月11日 5:54
    版主
  • 恩,谢了
    2011年4月11日 10:31