2012-11-27 2 views
4

나는이 정확하지 알고 있지만, 이것이 내가하고 싶은 것을 기본적으로 줌라 사용자를 삭제하려면 같은 첫 번째 & 성을 가진 스팸 계정이 많이 있습니다 (예 : Uzhuzaio Uzhuzaio). 삭제하고 싶습니다.MySQL의 쿼리는 같은 첫번째 & 성

그래서 요약, 난 당신이의 name 필드

답변

1

SUBSTRING_INDEX을 사용할 수 있습니다.이 경우 특정 수의 구분 기호가 발생하기 전이나 후에 하위 문자열이 반환됩니다.
아래 예에서 space는 구분 기호이며 1은 첫 번째 공백의 왼쪽에있는 모든 것을 반환하고 -1은 첫 번째 공백의 오른쪽에있는 모든 것을 반환합니다.

DELETE FROM jos_users WHERE 
     SUBSTRING_INDEX(name, " ", 1)=SUBSTRING_INDEX(name, " ", -1) 
내가 그러나 합법적 인 사용자가 거기에 없다는 것을 확인하는 SELECT 첫째을 수행 할 것 (희귀하지만 일어날 수)

중요 사항 : 이름의 형식이 유일한 작품 인 경우 <name> <surname>. 여러 개의 공백이 문제를 일으킬 수 있습니다. 공백이 여러 개인 경우 (예 : <composite name> <composite name>) 다른 카운트 값 (2;-23;-3 등)을 사용해야합니다.

+0

고마워! 잘 돌아 간다. – user1855769

2

내가

DELETE FROM jos_users WHERE SUBSTRING_INDEX(name, '=', 1) = SUBSTRING_INDEX(name, '=', -1) 

트릭을 할해야한다고 생각 같은 단어의 2를 포함하는 경우 jos_users에서 사용자를 삭제하는 쿼리를해야합니다 그것을 시도?

+2

OP의 경우 Joomla에 대한 쿼리를 작성할 때 테이블 접두어를 사용하지 마십시오. 테이블 이름은'#__ users'와 같아야하므로 항상'#__ '로 대체하십시오. 두 개의 밑줄이 있습니다. – Lodder

+0

특별한 이유가 있습니까? 아니면 좋은 습관입니까? 내가 올바르게 기억한다면 Joomla의 설치 과정에서 테이블 접두사를 설정할 수 있습니다. 그래서 항상 모든 데이터베이스와 동일해야합니다. 내가 놓친 게 있니? – Cynical

+0

'# __ '이 (가) 사용되지 않고 JomSocial과 같은 확장 프로그램을 다운로드 한 경우 데이터베이스 테이블 접두사에 맞게 모든 쿼리를 변경해야합니다. 사람들은 서로 다른 접두어를 사용하므로 전체적인 정의가되며 간단하게 삶을 수월하게 만듭니다. – Lodder

0

기본적으로 Joomla에는 성과 이름에 대한 별도의 필드가 없습니다. 거의 확실하게 당신은 그들을 어떤 기호로 구분합니다. 나는 그것을 정의하고 간단한 PHP 코드를 작성하는 것이 좋습니다. 적어도 이것이 내가하는 일입니다.