Obviamente, eles não devem ser vistos, portanto, pesquisar neles seria problemático.
Um truque que usei no passado é fazer o hash dos dados criptografados antes de criptografá-los e armazenar o hash em uma coluna indexada. Obviamente, isso só funciona se você estiver pesquisando todo o valor; valores parciais não terão o mesmo hash.
Provavelmente, você pode estender isso criando um índice de hashes de "texto completo", se necessário, mas isso pode ficar complicado muito rápido.
TERMO ADITIVO
Foi sugerido que eu adicionasse uma nota de rodapé à minha resposta em um debate bastante longo no bate-papo sobre vulnerabilidade a ataques de dicionário, portanto discutirei esse risco potencial à segurança da abordagem acima.
Ataque de dicionário: um ataque de dicionário ocorre quando alguém pré-hashes uma lista de valores conhecidos e compara os hashes à sua coluna de hash no banco de dados. Se eles puderem encontrar uma correspondência, é provável que o valor conhecido seja realmente o que está sendo hash (embora não seja definitivo, porque não é garantido que os hashes sejam únicos). Isso geralmente é atenuado ao hash do valor com um "sal" aleatório anexado ou anexado, para que o hash não corresponda ao dicionário, mas a resposta acima não pode ser utilizada porque você perde a capacidade de pesquisa.
Esse ataque é perigoso ao lidar com coisas como senhas: se você criar um dicionário de hashes de senha populares, poderá pesquisar rapidamente na tabela esse valor de hash e identificar um usuário que tenha essa senha e extrair efetivamente credenciais para roubar a identidade do usuário. .
É menos perigoso para itens com um alto grau de cardinalidade, como SSNs, números de cartão de crédito, GUIDs etc. (mas existem riscos diferentes [leia-se: legal] associados ao armazenamento desses itens, portanto, não estou inclinado a aconselhá-los. )
O motivo disso é que, para que um ataque de dicionário funcione, você precisa ter um dicionário pré-construído de valores possíveis e seus hashes. Você poderia, em teoria, construir um dicionário de todos os SSNs possíveis (um bilhão de linhas, assumindo que todas as permutações de formatação foram removidas; várias dezenas de trilhões de entradas para cartões de crédito) ... mas isso não costuma ser o ponto de um ataque de dicionário, e basicamente se torna comparável a um ataque de força bruta, no qual você está investigando sistematicamente todos os valores.
Você também pode procurar um SSN específico ou número de cartão de crédito, se estiver tentando corresponder um SSN a uma pessoa. Novamente, geralmente não é o objetivo de um ataque de dicionário, mas é possível, por isso, se esse é um risco que você precisa evitar, minha resposta não é uma boa solução para você.
Então aí está. Como em todos os dados criptografados, eles geralmente são criptografados por um motivo; portanto, esteja ciente dos seus dados e do que você está tentando protegê-los.