2011-08-23 4 views

답변

0

이와 비슷한?

UPDATE your_table 
SET user_agent = SUBSTR(server_var_dump, 
     @p, INSTR(SUBSTR(server_var_dump, @p, 100), "\n")-1) 
WHERE @p := INSTR(server_var_dump,'[HTTP_USER_AGENT]')+21; 
+0

# 1193 - 알 수없는 시스템 변수 'user_agent' –

+0

ak이 @user_agent와 같이 변경되었습니다. 하지만 지금은이 오류가 발생 # 1064 - SQL 구문에 오류가 있습니다; 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 3 행의 @p : = INSTR (server_var_dump, '[HTTP_USER_AGENT]') + 21 '근처에서 사용하십시오. –

+0

조금만 놔 줬습니다. 'user_agent'는 실제 사용자 에이전트 문자열로 업데이트하려는 테이블의 필드를 의미합니다. 귀하의 질문에 '별도의 입력란에'이라고 표시되었습니다. 내가 사용하는 유일한 변수는'@ p' –

0

나는 또한 답변을 찾았습니다. :) 생각은 다른 사람을 위해 유용 할 것입니다 :

UPDATE tablename SET useragent= SUBSTRING_INDEX(SUBSTR(server_var_dump,INSTR(server_var_dump,'[HTTP_USER_AGENT]')+21,200), '[', 1); 

어떻게? substring_index는 "["delimeter가 정의 된 첫 번째 항목이 나타날 때까지 부분 문자열을 가져옵니다. 정의 된 하위 문자열은 [HTTP_USER_AGENT] +21 +21 [HTTP_USER_AGENT] 개를 제거하는 것으로 시작됩니다. 이제는 우리가 원하는 것은 사용자 에이전트 (useragent)입니다. :) 지금 나는 의심이있다. 이 항목을 전체 열로 업데이트하면 업데이트가 user_agent를 가져온 server_var_dump 행에 부식 될 것입니까? 아니면 그냥 처음부터 업데이트할까요?

관련 문제